Wie wandle ich ein PDF in ein durchsuchbares PDF um?


20

Ich habe eine Reihe von gescannten Dokumenten im PDF-Format und möchte sie durchsuchen können. Wie kann ich das machen?

Im Wesentlichen muss ich das PDF OCR und dann den extrahierten Text wieder in ein neues PDF mischen. Ich habe verschiedene Lösungen erfolglos ausprobiert (einschließlich der unter Hinzufügen von OCR-Informationen zu einer PDF ).

  1. pdfocr (das gibt mir dieses Problem: https://github.com/gkovacs/pdfocr/issues/7 )
  2. pdfsandwich (von dem das Software-Center sagt, dass es ein schlechtes Paket ist und ich es nicht installieren sollte)
  3. OCRfeeder (im Software Center) exportiert gut nach odt, reagiert aber nicht beim Export nach pdf.
  4. Gscan2pdf exportiert ein vollständig schwarzes (aber durchsuchbares) Bild, wie in dieser Diskussion angegeben .
  5. Ich glaube nicht, dass Pdfxchange Viewer es schafft, Dateien über 500 Seiten im Handumdrehen zu bearbeiten.

Gibt es ein Softwarepaket, von dem ich nichts weiß? Oder ein Skript, das das macht?


3
Ich habe es selbst noch nicht ausprobiert, aber ich habe gesehen, dass dieses Projekt in der Vergangenheit empfohlen wurde.
Glutanimate

Ich habe gerade geschrieben pdf2searchablepdf. Es verlässt sich auf tesseract. Es funktioniert gut. Super einfach zu bedienen. Siehe hier. askubuntu.com/a/1187881/327339
Gabriel Staples

Antworten:


12

Ubuntu <16.04

Nach dem Kommentar von Glutanimate habe ich eine funktionierende Lösung gefunden. Es ist das OCRmyPDF-Skript .

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

Wenn Sie eine Meldung erhalten, dass Sie GNU parallel installieren sollten. Dies kann (unter /ubuntu//a/298598/115155 ) mit erfolgen (die zweite Zeile ist optional und hängt von Ihrem Geschmack und Ihrer Version ab):

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

Schließlich können Sie Ihr PDF mit dem Befehl OCR:

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

Wenn der Befehl anscheinend nicht reagiert, können Sie die Ausführlichkeit mit dem -vFlag erhöhen (das inkrementell als -vvoder verwendet werden kann -vvv). Am besten testen Sie die Ergebnisse zuerst in einem kürzeren PDF. Sie können ein PDF wie folgt kürzen:

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

Ubuntu> = 16.04

Ab Ubuntu 16.04 ist OCRmyPDF über apt verfügbar. Lauf einfach

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

Schließlich können Sie Ihr PDF mit dem Befehl OCR:

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

Wenn der Befehl anscheinend nicht reagiert, können Sie die Ausführlichkeit mit dem -vFlag erhöhen (das inkrementell als -vvoder verwendet werden kann -vvv). Am besten testen Sie die Ergebnisse zuerst in einem kürzeren PDF. Sie können ein PDF wie folgt kürzen:

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

Wenn Sie Fragen haben, schauen Sie im neuen Github Repo nach .


Würden Sie Ihre Antwort akzeptieren, um sie zu lösen? (Damit sie nicht in die unbeantwortete Liste aufgenommen wird)
Registrierter Benutzer

Nur sudo -H pip install git+https://github.com/jbarlow83/OCRmyPDFfür Ubuntu 16.04
Martin Thoma

1
Für Ubuntu 16.10 und höher können Sie dies einfach tun sudo apt install ocrmypdf .
Endolith

6

@ don.joey antwortete mit dem ocrmypdf- Skript. Es kann jetzt jedoch direkt installiert werden (ab 16.10).

sudo apt install ocrmypdf

Dann müssen Sie die benötigten tesseract- Sprachen installieren .

Um aufzulisten, welche Sprachen sich bereits in Ihrem System befinden, geben Sie Folgendes ein:

tesseract --list-langs

Falls Sie eines verpassen, installieren Sie es. Zum Beispiel,

sudo apt install tesseract-ocr-spa

Jetzt können Sie mit dem folgenden Befehl eine durchsuchbare PDF-Datei erstellen (deren Qualität je nach gescanntem Dokument unterschiedlich ist)

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

Natürlich können Sie in der Manpage nach weiteren Optionen suchen.


Habe mein Upvote Sir!
don.joey

4

pdfsandwichführt genau diesen Job aus. Ich wusste nicht, dass es ein Paket im Software-Center gibt, aber ich stelle Ubuntu-Deb-Pakete dafür auf der Projekt-Website zur Verfügung (siehe http://www.tobias-elze.de/pdfsandwich/ für Details). einschließlich der aktuellsten Version (0.1.2), die noch in keinem Software-Center zu finden ist.

Wenn Sie eine gescannte Datei haben scanned_file.pdf, rufen Sie einfach an

pdfsandwich scanned_file.pdf

das erzeugt die Datei scanned_file_ocr.pdf mit dem erkannten Text den gescannten Seiten hinzugefügt wird.

Im Vergleich zu den meisten vorhandenen Lösungen erkennt es die installierte tesseract-Version automatisch und passt ihr Verhalten entsprechend an. Darüber hinaus führt es eine Vorverarbeitung der gescannten Bilder vor dem OCR-Prozess durch, wie z. B. ein Verzerren oder Entfernen von dunklen Kanten usw., wodurch die optische Zeichenerkennung erheblich verbessert werden kann.

HAFTUNGSAUSSCHLUSS: Ich bin der Entwickler von pdfsandwichund daher stark voreingenommen.


Es hört sich gut an, aber warum konvertiert die mit apt-get installierte pdfsandwich-Version 0.1.4 jedes Zeichen unter Ubuntu 16.04 in ein schwarzes Rechteck?
Valentas

1
Das ist schwer zu beantworten ohne weitere Details. Zunächst empfehle ich, eine neuere Version des Tools zu verwenden. Die aktuelle Version ist 0.1.6. Deb-Pakete für Ubuntu finden Sie auf der Website. Zweitens, wenn dies nicht hilft, können Sie die Option -verbose verwenden, um weitere Details abzurufen und diese Details zu verwenden, um einen Fehlerbericht einzureichen.
Tobias Elze

ein paar Probleme für mich. convert: Versuch, eine Operation auszuführen, die von der Sicherheitsrichtlinie `PDF '@ error / constitu.c / IsCoderAuthorized / 408 nicht zugelassen ist. so ich ImageMagick installieren musste von der Quelle heruntergeladen imagemagick.org/script/install-source.php dann habe ich ‚Fehler beim Laden von Bibliotheken geteilt: libMagickCore-7.Q16HDRI.so.6: nicht öffnen kann Shared Object - Datei:„No such datei oder verzeichnis "'und diese lösung funktionierte mit' sudo ldconfig / usr / local / lib 'imagemagick version ist 7.0.8-56 und wurde mit' identity -version 'erstellt.
Pierrely

Möglicherweise lohnt es sich, diese Dienstprogramme hinzuzufügen, wenn Sie pdfs bearbeiten oder zuschneiden möchten. 1. pdfshuffler zum Teilen linker und rechter Seiten (von 2-seitigen Originalen) 2. pdftk pdf chain Verwenden Sie pdftk (als JAR-Datei), um die Datei in gerade und ungerade Seiten zu teilen: 4 zum Trimmen von Seiten pdfquench - ich brauchte auch gir1. 2-goocanvas-2.0 gir1.2-poppler-0.18 python-pygoocanvas python-poppler python-pypdf2. pdfsandwich hat sich bewährt und auch die Dateigröße um das Zehnfache reduziert. Vielen Dank. Ubuntu 19.04 auch pdfsam zum Teilen und Zusammenführen, als Java-JAR-Datei nach dem Download
ausführen

0

OCRfeeder hat einen Fehler in

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

Zeile 436 sollte lauten:

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

hat das geändert und es hat bei mir funktioniert


0

Betriebssystem: Ubuntu 18.04

Installieren Sie zuerst tesseract-ocrmit:

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 !!

Wenn Sie eine andere Sprache als Englisch mit tesseract verwenden, müssen Sie das entsprechende Sprachpaket installieren. Zum Beispiel für Portugiesisch müssen Sie Folgendes tun:

sudo apt-get install tesseract-ocr-por

Andernfalls erhalten Sie den Fehler:

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.

Wenn Sie Google "tesseract PDF" verwenden, werden Sie diesen etwas veralteten Beitrag wahrscheinlich finden . Es gibt Ihnen jedoch einige nützliche Hinweise. Sie müssen zuerst Ihre .pdfDatei in eine konvertieren .tiff. Lauf:

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

Wenn Sie, wie in dem veralteten Beitrag, das Hinzufügen vergessen alpha -Off, wird der folgende Fehler angezeigt:

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

Jetzt können Sie den letzten Befehl ausführen. In dem speziellen Fall, dass Ihr Original-PDF in Portugiesisch vorliegt, benötigen Sie diesen Befehl:

tesseract -l por newfile.tiff output pdf 

Die generierte Datei wird benannt output.pdf. Wenn Ihr PDF-Dokument beispielsweise in Französisch vorliegt tesseract-ocr-fra, führen Sie nach der Installation des entsprechenden Dokuments Folgendes aus:

tesseract -l fra newfile.tiff output pdf 

Und die gewünschte Datei wird wieder output.pdf.


0

Ich hatte das gleiche Problem und schrieb es über das Wochenende. Versuch es einmal; es funktioniert super! Es ist eine einfache Hülle tesseract. Es wird verwendet pdftoppm, um eine PDF-Datei in eine Reihe von TIFF-Dateien zu konvertierentesseract OCR (Optical Character Recognition) für diese und eine durchsuchbare PDF-Datei als Ausgabe erstellt. Alle temporären Zwischendateien werden nach Abschluss des Skripts automatisch gelöscht.

Quellcode: https://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF

Anweisungen zur Installation und Verwendung pdf2searchablepdf:

Getestet unter Ubuntu 18.04 am 11. November 2019.

Installieren:

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

Verwenden:

pdf2searchablepdf mypdf.pdf

Sie haben jetzt ein PDF mit dem Namen mypdf_searchable.pdf , das durchsuchbaren Text enthält!

Erledigt. Der Wrapper hat keine Python-Abhängigkeiten, da er derzeit vollständig in Bash geschrieben ist.

Referenzen oder verwandte Ressourcen:

  1. PDF2SearchablePDF : https://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF
  2. Wie wandle ich ein PDF in ein durchsuchbares PDF um?
  3. Was ist die beste und einfachste OCR-Lösung?
  4. Extrahieren eingebetteter Bilder aus einem PDF
  5. pdfsandwich : Alternativer Software-Wrapper, den ich gerade entdeckt habe, das lohnt sich auch! 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. [wie man ein PDF in einen Haufen Bilder verwandelt pdftoppm] Eingebettete Bilder aus einem PDF extrahieren
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.