Rendi ricercabili i PDF esistenti (OCR) tramite riga di comando / script


21

Sto cercando uno strumento di script offline che rende ricercabile un file PDF esistente eseguendo OCR su di esso, sostituendo il file originale non ricercabile con la versione ricercabile e può essere eseguito incustodito.

Ad esempio, www.pdfscannerapp.com - fa esattamente quello di cui ho bisogno, ma è solo la GUI - non utilizzabile tramite script.

Sono consapevole che Evernote rende ricercabili i file PDF, ma rimangono ricercabili solo all'interno di Evernote.

Non sto cercando un OCR perfetto, anche un OCR moderatamente accettabile va bene, ma preferirei una piccola utility piuttosto che un pacchetto software ingombrante.

(Sono a conoscenza di una domanda simile, ma diversa su AD: ricerca di software per la scansione o la conversione in PDF ricercabile e firmabile - tuttavia, non ho bisogno di firmare o compilare PDF e il mio requisito è che la soluzione sia utilizzabile tramite script)

MODIFICARE:

1) Diverse utility consentono l'estrazione strutturata del testo, tuttavia per poter essere estratto, il testo deve essere presente; Mi riferisco principalmente ai PDF che sono bitmap incorporate, come nel caso dei PDF semplici generati dagli scanner.

2) Non sto necessariamente cercando una soluzione gratuita e sarei più che felice di pagare per una buona utility che fa proprio quello di cui ho bisogno, ma non cerco applicazioni ingombranti con un milione di funzionalità che includono una funzionalità OCR ma il cui costo non giustifica l'acquisto di loro solo per la funzionalità OCR.

3) Come detto sopra, non sto cercando un OCR perfetto, ma solo un OCR moderatamente accettabile. Sfortunatamente, nella mia esperienza, tesseract è davvero al di sotto di tale soglia. Definisco "moderatamente accettabile" un OCR che può, ad esempio, OCR una bolletta in modo che almeno il numero di conto (numero cliente) sia riconosciuto correttamente.

EDIT: "scriptable" o "automatable", cioè può essere attivato automaticamente e funzionare incustodito senza alcun input umano.


2
... non so come sarebbe stato difficile da fare, ma Tesseract OCR spesso citato code.google.com/p/tesseract-ocr e OCR in Unix.SE .
hhh

1
C'è una domanda simile qui , la risposta soddisfa le tue esigenze?
Nohillside

1
Citi OCR. I tuoi requisiti includono la gestione di immagini in PDF o file PDF scansionati? Per i file che contengono testo come semplice Postscript, un convertitore da PDF a testo come "PDF2Text Pilot" potrebbe funzionare per te.
Tim B

@patrix Cercavo un'utilità più piccola, non necessariamente gratuita ma in una fascia di prezzo diversa. Tuttavia, è una possibile soluzione, grazie.
magma

@TimothyButler purtroppo mi occupo di PDF scansionati (immagini). Ma, bel suggerimento, grazie.
magma

Risposte:


5

Non mi è del tutto chiaro quali siano i tuoi requisiti per poter "scrivere" questo dalla "riga di comando".

Se stai parlando di automazione, questo è possibile con qualsiasi numero di utility.

ABBYY FineReader Express + Tastiera Maestro + Hazel

Uso ABBYY FineReader Express + Keyboard Maestro + Hazel in questo modo:

  1. Hazel controlla una determinata cartella per eventuali nuovi PDF

  2. se viene trovato un PDF, questo viene aperto in "ABBYY FineReader Express"

  3. Keyboard Maestro automatizza quindi il processo di trasformazione del PDF in un PDF ricercabile (OCR) e salva il file in un'altra directory.

Ora, se non possiedi già Hazel e Keyboard Maestro, i tuoi costi iniziali aumenteranno piuttosto rapidamente (anche se dipendo da entrambi, li considero un vero affare).

PDFPen + AppleScript + Azioni cartella

Potresti fare qualcosa di simile con PDFPen (o PDFPenPro) e le azioni delle cartelle e AppleScript. Vedere https://gist.github.com/prenagha/1355037 per un esempio.

Marco Arment ha condotto un sondaggio sulle app OCR per Mac e ha scoperto che PDFPen ha ottenuto ottimi risultati ed è stato facile da automatizzare.

Una ricerca su Google per "PDFpen applescript OCR" presenterà una serie di alternative.


buona risposta TJ. Hazel è incredibile, lo possiedo e mi diverto a usarlo immensamente. Al momento non possiedo abbyy / maestro di tastiera, ma Hazel + PDFPen è una combinazione incredibile. Nel complesso, mentre tutte le risposte qui sono generalmente molto buone e servono un pubblico leggermente diverso, penso che Hazel + PDFPen sia adatto al problema originale. Accettato.
magma,

+1 su ABBYYFineReader Express, il migliore OCR in circolazione in questo momento e ho passato quasi una dozzina per un mio progetto
TechZen,

12

Quello che vuoi è Tesseract OCR. È un OCR open source gestito da Google e supporta una varietà di piattaforme. Ha anche un'interfaccia della riga di comando nativa. È esattamente quello che stai cercando e disponibile dal progetto di porte Mac e homebrew .

Home del progetto: https://github.com/tesseract-ocr

Come installare su OS X: http://blog.matt-swain.com/post/26419042500/installing-tesseract-ocr-on-mac-os-x-lion

Esempio di utilizzo: tesseract -l eng input.pdf output


Bel progetto. Nei miei test, il riconoscimento era scarso, ma sono sicuro che dipende dalla mia incapacità di perfezionarlo. Stavo cercando una soluzione più pigra, ma questa potrebbe essere una buona scelta soprattutto se vuoi un maggiore controllo e puoi dedicare tempo ad essa.
magma,

tesseract non ottiene molto bene rispetto alle più attuali app proprietarie. In particolare ha problemi con la codifica e la matematica, che spesso sfornano molti personaggi greci.
TechZen,

La versione OS X consente input PDF? La versione di Windows no.
Doug,

8

Disclaimer: NON UNA SOLUZIONE OCR (ma questa risposta è ancora utile per estrarre testo da pdf)

Esiste un progetto della Apache Software Foundation chiamato Apache Tika :

Un toolkit rileva ed estrae metadati e contenuti di testo strutturato da vari documenti utilizzando le librerie di parser esistenti

Supportano l'estrazione di testo PDF tramite PDFBox :

consente la creazione di nuovi documenti PDF, la manipolazione di documenti esistenti e la possibilità di estrarre contenuti dai documenti. Apache PDFBox include anche diverse utility da riga di comando

E recentemente hanno anche aggiunto il supporto per OCR (via Tesserac)

Per una soluzione basata su testo, PDFBox semplifica l'estrazione di testo da un PDF:

Ha anche alcune altre belle opzioni che puoi vedere nei documenti di ExtractText .


Sicuramente una buona opzione per l'estrazione di testo, ma non c'è alcuna funzionalità OCR che posso vedere.
magma

1
@magma OCR significa "riconoscimento ottico dei caratteri", c'è sicuramente "capacità OCR". Ora è necessario chiarire: il tuo problema è estrarre il testo da immagini a bassa risoluzione come quelle generate con cam VGA, scanner scadente o immagini distanti? Quindi il tuo problema è diverso e richiede la considerazione fisica di cose come la super risoluzione. Per favore, poni domande più specifiche e più brevi in ​​modo che possano essere risposte. Ti suggerisco di semplificare questa domanda per una funzione che desideri. Se vuoi qualcosa di più, fai una nuova domanda.
hhh

3
@hhh, una cosa è estrarre il testo da un file binario (come un PDF) in modo che sia utilizzabile e leggibile, analizzando il formato binario. non c'è nulla di ottico al riguardo. il testo è già lì, queste utility lo estraggono in modo che sia facile per i tuoi occhi, per così dire. il riconoscimento ottico dei caratteri è diverso in quanto cerca di riconoscere modelli di pixel in una bitmap e ha abbastanza senso di essi da poter produrre un frammento di testo corrispondente.
magma

Questo non risponde alla domanda originale. AFAICT, pdfbox-app non fa l'OCR.
Feuermurmel,

5

Consiglierei DEVONThink Pro Office . È un'applicazione eccellente e ha un ottimo supporto AppleScript. Purtroppo solo la versione "Pro Office" ha la funzionalità OCR, quindi dovrai sborsare £ 100 ($ 150).

Sarebbe eccessivo se lo si utilizza solo per l'OCR con script, ma è un'ottima app.

[modifica] - ah hai appena riletto il tuo post - sarebbe sicuramente eccessivo!

Se si desidera solo l'OCR dalla shell, è possibile provare a parlare con ABBY il cui motore DEVON concede la licenza:

http://www.abbyy-developers.com/en:tech:samples:commandline_ocr


Sebbene DEVONThink Pro Office in OS X sia eccessivo, è interessante. Se gli sviluppatori l'hanno progettato su OS X e iOS, potrebbe comunque funzionare (mantenendo l'interfaccia utente più semplice) - conosci qualcosa del genere? Bella idea però - quindi la versione Pro aggiunge automaticamente il livello OCR a tutti i tipi di cose come schermate e PDF? E l'utente può in qualche modo "copiarlo"?
hhh

2
Sì, l'app ha un buon dizionario AppleScript, che tra l'altro ti consente di convertire le immagini memorizzate nell'app in PDF ricercabili.
Diggory

Supponiamo di scattare foto con iPhone o screenshot con OS X e di inserirli in una cartella ProjectA, il DEVONThh pensa di aggiungere automaticamente il livello OCR anche senza specificare la lingua? Supponiamo di metterli su un DropBox e quindi fare in modo che DEVONThink in OSX per controllare automaticamente la cartella, potresti lavorare con esso su OS X e iOS allora? È un concetto affascinante se fatto bene ... +1
hhh

In un certo senso, sembra EverNote in cui EverNote aggiunge l'OCR, ma non consente l'esportazione in quel modo. È possibile esportare i tuoi progetti da questo software con l'OCR? In caso contrario, alcune librerie OCR molto semplici e alcune librerie di analisi linguistica potrebbero funzionare al meglio. Forse l'altro è ABBY, non lo so ancora.
hhh,

2
Può riconoscere in diverse lingue: i.stack.imgur.com/buDLI.png
Diggory

5

Puoi rendere ricercabile il tuo PDF esistente convertendolo in file di testo. È necessario almeno quello Imagemagick , Ghostscript (per la conversione di PDF) e lo strumento OCR Tesseract .

Alcuni esempi da riga di comando:

$ wget http://www.fmwconcepts.com/misc_tests/pdf_tests/test.pdf
$ convert -density 300 -depth 8 test.pdf test.png
$ tesseract test*.png test.txt
$ grep -i --color=auto the test*.txt
**The** details as told by surviving crew members, to **the** German publication Spiegel and published on ABC's

Questo può essere esteso ulteriormente alle tue esigenze.

Per installare gli strumenti richiesti, su OSX è possibile installarlo tramite Homebrew :

brew install imagemagick jpeg libpng ghostscript tesseract

Su Linux usa apt-geto yuminvece di brew.

Per ulteriori strumenti OCR, selezionare: OCR su sistemi Linux

Relazionato:


4

Una soluzione che è facilmente implementabile e fornisce un pdf di output con la stessa qualità del file di input più dimensioni ragionevoli è OCRmyPDF:

https://github.com/jbarlow83/OCRmyPDF


Sembra una soluzione interessante, anche se ho trovato il backend OCR, Tesseract, piuttosto deludente (sicuramente a causa delle mie limitazioni nella corretta configurazione).
magma,

Adoro OCRmyPDF, vedi la mia risposta di seguito che spiega come installare e trascinare e rilasciare automatizzare in modo rapido e indolore con la finestra mobile.
Thadk,

1

Stackoverflow ha domande correlate durante l' analisi del PDF riguardanti argomenti come PDFBox e TIKA di Apache che PDFBox utilizza. Il seguente codice rubino estrae la scrittura dal PDF. È necessario disporre di una risoluzione sufficiente per questo tipo di codici per funzionare in modo affidabile. Quindi prendi uno scanner abbastanza buono con una grande risoluzione e poi vedi se alcuni dei software funzionano.

Esempi

  1. https://github.com/yob/pdf-reader/tree/master/examples

Discussioni SO

  1. /programming/5217783/pdf-parse-to-text-in-java

  2. /programming/8149179/alternative-to-tika-pdfbox-for-parsing-pdf-in-solr-any-version-later-than-1-4

  3. /programming/320621/ruby-pdf-parsing-gem-library

  4. /programming/15186740/haskell-parsing-reading-content-of-pdf-files

[Modificare]

Non sono sicuro di aver capito il tuo problema ora. Vuoi aggiungere il livello OCR a diversi tipi di materiale come foto casuali, schermate, PDF senza livello OCR e così via? Non conosco la soluzione ma sono sicuro che qualcuno lo sappia, quindi ho fatto una domanda specifica su come farlo con Automator e alcuni software OCR:

Automator-script con un software OCR per aggiungere automaticamente OCR al materiale?


Di nuovo: non sto cercando di analizzare o estrarre il testo che è già lì. Sto cercando di riconoscere il testo (OCR) in file PDF che sono essenzialmente immagini, bitmap; non contengono originariamente alcun testo.
magma

@magma, per favore, vedi il mio aggiornamento. Vuoi automatizzare l'aggiunta del livello OCR in modo da poter cercare diversi tipi di documenti anche senza "testo ricercabile"? Se potessi farlo, potresti cercare su tutti i documenti in Finder - hai capito? Sono sorpreso se Apple non lo fa nei prossimi aggiornamenti ...
hhh

come indicato nella mia domanda, sì.
magma

1

Per questo tipo di applicazione auto-diretta, sono un grande fan di Hazel.

Rende estremamente facile lo script di azioni senza la necessità di apprendere uno strumento più orientato alla riga di comando come perl o python e abbinato al motore OCR di tua scelta (il mio è attualmente PDF Pen Pro) non dovresti avere problemi a elaborare i tuoi file con il minimo polverone.

Entrambi sono software a pagamento, ma l'utilità di entrambi si estende ben oltre questo caso. Nella mia situazione, con la manodopera impegnata nella digitalizzazione dei miei precedenti documenti scansionati (e documenti in corso), il prezzo di questi supera di gran lunga il tempo che avrei trascorso a programmare questo altrove e ora che possiedo entrambi gli strumenti, posso fare molti altri compiti con loro.


0

PDFScannerApp ha un supporto di scripting non ufficiale. Contatta l'autore per l'azione di Automator.


0

Uso Adobe Acrobat per l'OCR in batch. Il mio scanner duplex può eseguire l'OCR dopo la scansione, ma secondo me la tecnologia OCR in acrobat è più accurata. Indico solo la cartella in cui non è presente l'OCR, quindi Acrobat salva nuovamente il PDF come PDF ricercabile che include ora un livello di testo. Se volessi OCR tramite riga di comando, non conosco un modo, ma posso automatizzare la fine della GUI usando Autohotkey. Non affidabile né veloce come la riga di comando, ma fa il lavoro dopo aver impostato un'azione del flusso di lavoro per ridurre al minimo l'interazione della GUI.

Per Mac, lo script Apple fa quello che fa Autohotkey sul PC anche se non ho ancora provato sul mio Mac.

Il tasto di scelta rapida automatica viene fornito con un registratore, quindi la maggior parte della scrittura dello script è la cena per te con un po 'più piccolo di editing per la raffinatezza e forse il loop se lo desideri.

Ho sperimentato immagini OCR ma non ho ancora automatizzato completamente il processo tramite acrobat. La riga di comando è l'ideale ma non ho trovato un motore OCR di qualità che superi l'acrobata, quindi per ora mi attengo all'acrobata.


0

Mi sono imbattuto in questo recentemente: http://ocrkit.com/faq.html

Devi pagare dopo 14 giorni però


1
Benvenuti a chiedere diverso! Stiamo cercando di trovare le risposte migliori e tali risposte forniranno informazioni sul perché sono le migliori. Spiega perché pensi che il software che hai raccomandato sia migliore di altri là fuori. In generale, le risposte solo al link sono suscettibili di essere eliminate, quindi si desidera sempre includere la risposta includendo tutte le informazioni pertinenti. Vedi Come rispondere su come fornire una risposta di qualità.
fsb,

0

Ho ottenuto una conversione Drag & Drop di alta qualità funzionante con Docker.

Se tu:

  1. installa Docker per il tuo Mac e
  2. quindi crea una nuova app Automator
  3. con questi contenuti all'interno di un'azione "Esegui uno script di shell". Scegli Pass Input:"as arguments"

/bin/bash testo dello script:

cd "`dirname "$1"`"
/usr/local/bin/docker run --rm -v "$(pwd):/home/docker" jbarlow83/OCRmyPDF --force-ocr "`basename "$1"`" "`basename -s .pdf "$1"`-ocr.pdf"

Dovresti quindi essere bravo a trascinare e rilasciare i PDF su di esso e otterrai un PDF con un nome simile con "-ocr" aggiunto al nome del file.

Immagino che possa essere facilmente modificato per restituire un file ad Automator da copiare anche da qualche parte. Maggiori dettagli sul pacchetto docker OCRmyPDF. e strumento principale (anche menzionato in una risposta diversa).

Puoi testarlo in Automator stesso con l'azione "Ottieni elementi del Finder specificati" come input per questo.

La prima volta che viene eseguito, impiega più tempo in quanto dovrà scaricare le immagini Docker per OCRmyPDF (invisibilmente). In Terminale, puoi in alternativa correre docker pull jbarlow83/ocrmypdfper accelerare la prima corsa. Una corsa tipica richiede circa 10 secondi per pagina DPI alta ma ha automaticamente risultati di sintesi vocale anche se sono presenti tabelle o diagrammi. Prima dell'OCR, ritaglio usando Sejda in modo da rimuovere le parole di margine senza senso da altre pagine.

L' --force-ocrargomento dice allo strumento di ignorare e sovrascrivere qualsiasi precedente tentativo di OCR, che nei miei casi di solito sono solo parziali e inutili.


0

OCRKit ha sia il supporto AppleScript che una CLI. Dalla loro pagina di aiuto :

AppleScript

Puoi anche scrivere OCRKit per integrarlo nel tuo flusso di lavoro specifico. Ad esempio, elaborare i file in arrivo, tramite la cartella condivisa, dalla fotocopiatrice della stampante multifunzione, ecc. E semplicemente dire a OCRKit di aprirsi e quindi il processo avviene tramite AppleScript:

tell application "OCRKit"
   -- the wonders of AppleScript POSIX path handling, ...
   open "Users:admin:Desktop:orderform.pdf"
   open POSIX path of "/Users/Admin/Desktop/orderform.pdf"
end tell 

Riga di comando

Poiché è supportato lo scripting diretto da riga di comando OCRKit versione 2.5. Ciò semplifica notevolmente l'uso di OCRKit nell'elaborazione batch, consente di impostare più opzioni ed è anche più robusto e multipiattaforma di AppleSCript.

OCRKit.app/Contents/MacOS/OCRKit \ 
    --lang en | de | fr | es | ... \
    --format pdf | html | rtf | text \
    --no-progress \
    --output out-file in-file

Dalla versione 16.9 di OCRKit sono supportate ulteriori opzioni della riga di comando:

-r, --recursive directory

Scansione ricorsiva della directory per nuovi file. Salta i file da OCRKit, con livello di testo o grafica vettoriale.

--pattern "regex"

Pattern utilizzato per abbinare i nomi dei file durante le scansioni ricorsive. L'impostazione predefinita è %.pdf$, la raccomandazione per TIFF è%.tiff?$

--log file

Scrivere informazioni e statistiche sui file di registro durante la scansione ricorsiva su file.

--password secret

Utilizzare una password segreta per decrittografare i file PDF durante l'elaborazione in batch.

--test-run [ fast ]

Eseguire l'elaborazione batch di test in modalità test solo per testare i file PDF o per ottenere il conteggio delle pagine per stimare il tempo di elaborazione totale. "veloce" controllerà solo la prima pagina di ogni file, invece di passare attraverso tutte le pagine per l'analisi di immagini e vettori.

--tag name

Utilizzare il nome dell'attributo esteso per contrassegnare lo stato di elaborazione dei file durante l'elaborazione batch. macos:OCRKit (%s)utilizzerà invece i tag nativi di macOS Finder o semplicemente macos:OCRKitnon includerà l'attributo state. L'ordine dell'attributo Stato sono: started, analyzed, processed, e possono anche essere encrypted.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.