Come trasformare un pdf in un pdf ricercabile testuale?


20

Ho un numero di documenti scansionati in pdf e voglio poterli cercare. Come posso fare ciò?

Fondamentalmente devo OCR il pdf e poi fondere il testo estratto in un nuovo pdf. Ho provato senza successo una serie di soluzioni diverse (comprese quelle che si trovano nell'aggiunta di informazioni OCR a un PDF ).

  1. pdfocr (che mi dà questo problema: https://github.com/gkovacs/pdfocr/issues/7 )
  2. pdfsandwich (di cui il centro software dice che è un pacchetto scadente e non dovrei installarlo)
  3. OCRfeeder (nel centro software) esporta in modo gradevole, ma non reagisce quando si esporta in pdf.
  4. Gscan2pdf esporta un'immagine tutta nera (ma ricercabile) come riportato in questa discussione .
  5. Non credo che il visualizzatore Pdfxchange possa gestire l'OCR al volo su file di oltre 500 pagine.

Esiste un pacchetto software di cui non sono a conoscenza? O una sceneggiatura che fa questo?


3
Non l'ho ancora provato da solo, ma ho visto questo progetto essere raccomandato in passato.
Glutanimate,

Ho appena scritto pdf2searchablepdf. Si affida tesseract. Funziona bene. Super facile da usare. Vedere qui. askubuntu.com/a/1187881/327339
Gabriel Staples,

Risposte:


12

Ubuntu <16.04

Dopo il commento di Glutanimate ho trovato una soluzione funzionante. È lo script OCRmyPDF .

git clone https://github.com/jbarlow83/OCRmyPDF
cd OCRmyPDF
sh ./OCRmyPDF.sh -h  # to see the usage

Se ricevi un messaggio che dice che dovresti installare GNU parallel. Può essere fatto (seguendo /ubuntu//a/298598/115155 ) con (la seconda riga è facoltativa e dipende dal sapore e dalla versione):

sudo apt-get install parallel
sudo rm /etc/parallel/config

Finalmente puoi OCR il tuo pdf con il comando:

sh ./OCRmyPDF.sh input.pdf output.pdf  # change input and output to the files you want

Se il comando non risponde, è possibile aumentare la verbosità utilizzando il -vflag (che può essere utilizzato in modo incrementale come -vvo -vvv). Potrebbe essere meglio testare i risultati prima su un pdf più breve. È possibile abbreviare un pdf come segue:

pdftk A=input.pdf cat A1-5 output output.pdf

Ubuntu> = 16.04

A partire da Ubuntu 16.04 OCRmyPDF è diventato disponibile tramite apt. Corri

sudo apt install ocrmypdf
ocrmypdf -h   # to see the usage

Finalmente puoi OCR il tuo pdf con il comando:

ocrmypdf input.pdf output.pdf  # change input and output to the files you want

Se il comando non risponde, è possibile aumentare la verbosità utilizzando il -vflag (che può essere utilizzato in modo incrementale come -vvo -vvv). Potrebbe essere meglio testare i risultati prima su un pdf più breve. È possibile abbreviare un pdf come segue:

pdftk A=input.pdf cat A1-5 output output.pdf

Se hai qualche domanda dai un'occhiata al nuovo Github Repo .


Accetteresti la tua risposta per risolverla? (In modo che non rientri nell'elenco senza risposta)
Utente registrato

Solo sudo -H pip install git+https://github.com/jbarlow83/OCRmyPDFper Ubuntu 16.04
Martin Thoma il

1
Per Ubuntu 16.10 e versioni successive, puoi semplicemente farlo sudo apt install ocrmypdf.
Endolith,

6

@ don.joey ha risposto con lo script ocrmypdf . Tuttavia, può essere installato direttamente ora (dal 16.10 in poi).

sudo apt install ocrmypdf

Quindi devi installare le lingue tesseract di cui hai bisogno.

Per elencare quali lingue sono già presenti nel tuo sistema, digita:

tesseract --list-langs

Nel caso ne manchi uno, installalo. Per esempio,

sudo apt install tesseract-ocr-spa

Ora puoi produrre un PDF ricercabile (la cui qualità varierà, a seconda del documento scansionato) con il seguente comando

ocrmypdf -l 'spa' old.pdf new.pdf

Puoi, naturalmente, controllare la sua pagina man per alcune opzioni aggiuntive.


Ho il mio voto signore!
don.joey,

4

pdfsandwichsvolge esattamente questo lavoro. Non sapevo che ci fosse un pacchetto nel centro software, ma sto fornendo pacchetti deb Ubuntu per questo sul sito web del progetto (vedi http://www.tobias-elze.de/pdfsandwich/ per i dettagli), inclusa la versione più recente (0.1.2), che probabilmente non è ancora presente in nessun centro software.

Se hai un file scansionato scanned_file.pdf, chiama semplicemente

pdfsandwich scanned_file.pdf

che genera il file scanned_file_ocr.pdfcon il testo riconosciuto aggiunto alle pagine scansionate.

Rispetto alla maggior parte delle soluzioni esistenti, rileva automaticamente la versione di tesseract installata e adatta il suo comportamento di conseguenza. Inoltre, esegue la preelaborazione delle immagini scansionate prima del processo OCR, come il disallineamento o la rimozione di bordi scuri, ecc., Che può migliorare notevolmente il riconoscimento ottico dei caratteri.

DISCLAIMER: sono lo sviluppatore pdfsandwiche quindi fortemente di parte.


Sembra fantastico, ma perché pdfsandwich versione 0.1.4 installata usando apt-get converte ogni personaggio in un rettangolo nero per me su Ubuntu 16.04?
Valentas,

1
È difficile rispondere senza ulteriori dettagli. Prima di tutto, consiglio di utilizzare una versione più recente dello strumento. La versione attuale è 0.1.6. Puoi trovare i pacchetti deb per Ubuntu sul sito web. In secondo luogo, se ciò non aiuta, è possibile utilizzare l'opzione -verbose per ottenere ulteriori dettagli e utilizzare questi dettagli per presentare una segnalazione di bug.
Tobias Elze,

un paio di problemi per me. converti: tenta di eseguire un'operazione non consentita dalla politica di sicurezza `PDF '@ errore / constit.c / IsCoderAuthorized / 408. quindi ho dovuto installare imagemagick dal sorgente scaricato da imagemagick.org/script/install-source.php quindi ho avuto 'errore durante il caricamento delle librerie condivise: libMagickCore-7.Q16HDRI.so.6: impossibile aprire il file oggetto condiviso: "No file o directory "'e questa soluzione ha funzionato eseguendo' sudo ldconfig / usr / local / lib 'la versione di imagemagick è 7.0.8-56 ottenuta da' identifica -versione '.
pierrely

potrebbe valere la pena aggiungere questi programmi di utilità se si prevede di manipolare o tagliare i pdf. 1. pdfshuffler per dividere le pagine sinistra e destra (di originali a 2 facciate) 2. catena pdf pdftk Usa pdftk (come file jar) per dividere il file in pagine pari e dispari separatamente: 4 per tagliare le pagine pdfquench - avevo bisogno anche di gir1. 2-goocanvas-2.0 gir1.2-poppler-0.18 python-pygoocanvas python-poppler python-pypdf2. pdfsandwich ha funzionato a meraviglia, riducendo anche le dimensioni del file di 10 volte. Grazie. Ubuntu 19.04 anche pdfsam per dividere e unire, eseguito come file jar Java dopo il download
pieramente

0

OCRfeeder ha un bug in

/usr/lib/python2.7/dist-packages/reportlab/pdfgen/textobject.py

la riga 436 dovrebbe contenere:

            lines = asUnicode(stuff).strip().split('\n')
# bug here, was:
#            lines = '\n'.split(asUnicode(stuff).strip())

cambiato questo e ha funzionato per me


0

Sistema operativo: Ubuntu 18.04

Innanzitutto, installa tesseract-ocrcon:

apt-cache show tesseract-ocr
sudo apt-get update && sudo apt-get upgrade
apt-get install tesseract-ocr --print-uris
apt-get install tesseract-ocr
sudo !!

Se hai intenzione di utilizzare una lingua diversa dall'inglese con tesseract, dovrai installare il pacchetto di lingue corrispondente. Ad esempio per il portoghese, dovrai fare:

sudo apt-get install tesseract-ocr-por

Altrimenti otterrai l'errore:

Error opening data file /usr/share/tesseract-ocr/4.00/tessdata/por.traineddata
Please make sure the TESSDATA_PREFIX environment variable is set to your 
"tessdata" directory.
Failed loading language 'por'
Tesseract couldn't load any languages!
Could not initialize tesseract.

Se Google "tesseract PDF" troverai probabilmente questo post un po 'obsoleto . Tuttavia, ti dà alcuni suggerimenti utili. Dovrai prima convertire il tuo .pdffile in .tiffuno. Correre:

convert -density 125 originalfile.pdf -depth 8 -alpha Off newfile.tiff

Se, come nel post obsoleto, ti dimentichi di aggiungere alpha -Off, otterrai il seguente errore:

Tesseract Open Source OCR Engine v4.0.0-beta.1 with Leptonica
Error in pixReadFromTiffStream: spp not in set {1,3,4}

Ora puoi eseguire il comando finale. Nel caso particolare in cui il tuo PDF originale sia in portoghese, avrai bisogno di questo comando:

tesseract -l por newfile.tiff output pdf 

Il file generato verrà nominato output.pdf. Se, ad esempio, il tuo PDF è in francese, dopo aver installato il corrispondente tesseract-ocr-fra, eseguirai:

tesseract -l fra newfile.tiff output pdf 

E il file desiderato sarà, ancora una volta, output.pdf.


0

Ho avuto lo stesso problema, quindi l'ho scritto durante il fine settimana. Dagli Un colpo; funziona benissimo! È un semplice wrapper in giro tesseract. Utilizza pdftoppmper convertire un PDF in un gruppo di file TIFF, quindi utilizza tesseractper eseguire l'OCR (riconoscimento ottico dei caratteri) su di essi e produrre un PDF ricercabile come output. Tutti i file temporanei intermedi vengono automaticamente eliminati al termine dello script.

Codice sorgente: https://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF

Istruzioni per l'installazione e l'uso pdf2searchablepdf:

Testato su Ubuntu 18.04 l'11 novembre 2019.

Installare:

git clone https://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF.git
./PDF2SearchablePDF/install.sh
sudo apt update
sudo apt install tesseract-ocr

Uso:

pdf2searchablepdf mypdf.pdf

Ora avrai un pdf chiamato mypdf_searchable.pdf , che contiene testo ricercabile!

Fatto. Il wrapper non ha dipendenze python, poiché è attualmente scritto interamente in bash.

Riferimenti o risorse correlate:

  1. PDF2SearchablePDF : https://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF
  2. Come trasformare un pdf in un pdf ricercabile testuale?
  3. Qual è la soluzione OCR migliore e più semplice?
  4. Estrazione di immagini incorporate da un PDF
  5. pdfsandwich : software wrapper alternativo che ho appena scoperto, vale la pena dare un'occhiata anche a! http://www.tobias-elze.de/pdfsandwich/
  6. /unix/301318/how-to-ocr-a-pdf-file-and-get-the-text-stored-within-pdf/551526#551526
  7. [come trasformare un PDF in un mucchio di immagini con pdftoppm] Estrarre immagini incorporate da un PDF
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.