Ich habe mit der Verwendung von Tesseract für die Texterkennung von PDFs experimentiert und es war meistens erfolgreich, insbesondere mit deutschen Fraktur-Texten (dem alten gotischen Druck), die Tools wie Adobe Acrobat nicht richtig erkennen können.
Das Problem ist, dass die Ausgabedateien von Tesseract ziemlich groß sind und ich sie nach dem OCR komprimieren möchte. Wenn ich jedoch Ghostscript verwende, um die Dateien zu komprimieren, ist der eingebettete OCR-Text durcheinander. Wenn ich ImageMagick verwende, wird der eingebettete Text ebenfalls entfernt. Gibt es einen Weg, dies zu umgehen? Theoretisch könnte ich vor dem OCR komprimieren, aber das würde die OCR-Genauigkeit verschlechtern.
Im Allgemeinen ist es mein Ziel, in meine PDF-Ausgabedateien OCR-Text in hoher Qualität einzubetten und die eingebetteten Bilder stark zu komprimieren, damit die Dateien nicht annähernd so viel Platz beanspruchen. Ich habe festgestellt, dass die Adobe Acrobat Pro-Funktion "Als anderes speichern> PDF in verkleinerter Größe" die Bilder stark komprimiert, aber jeglichen OCR-Text durcheinander bringt. Dies gilt unabhängig davon, ob die Dateien in Acrobat OCR-fähig waren oder mit einem Tool wie Tesseract erstellt wurden.
Hier ist mein aktueller Workflow anhand eines PDF-Beispiels .
PDF in TIFF-Dateien aufteilen
pdftk infile.pdf burst output "temp/page_%03d.pdf"
dpi=130 #this is the dpi of the particular file
parallel convert -verbose -density $dpi "{}" -depth 8 -background white -compress zip "{}.tiff" ::: temp/*.pdf
Führen Sie Tesseract für jede der TIFF-Dateien aus (siehe Ausgabe der Beispieldatei ).
language=deu_frak
parallel tesseract {} {} -l $language pdf ::: temp/*.tiff
- Wenn ich die ausgegebenen PDF-Dateien mit Ghostscript kombiniere, erhalte ich eine Datei wie diese , die den eingebetteten Text durcheinander bringt
- Wenn ich sie mit PDFtk kombiniere (zB pdftk temp / * .pdf cat output outfile.pdf`), erhalte ich eine Datei wie diese , die den eingebetteten Text beibehält, die Datei jedoch irgendwie vergrößert
- Und wenn ich dann versuche, diese Datei mit ImageMagic zu komprimieren (zB
convert -density 130x130 -quality 5 -compress jpeg outfile-pdftk.pdf outfile-pdftk-imagemagick.pdf
), wird der eingebettete OCR-Text ( Ausgabe ) entfernt.
Es scheint, dass Tesseract die Bilder in der Ausgabe-PDF nicht komprimiert, was zu erwarten ist - seine Aufgabe ist es, die Dateien mit OCR zu versehen und nicht die Ausgabe zu komprimieren.
Bei den ersten Tesseract OCR-Dateien wird beispielsweise Folgendes pdfimages -list temp/page_001.pdf.tiff.pdf
erzeugt:
page num type width height color comp bpc enc interp object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
1 0 image 1067 1508 rgb 3 8 jpeg no 11 0 129 130 318K 6.7%
... was darauf hinweist, dass das Bildobjekt im PDF nicht genau optimal gespeichert ist. Es ist immer noch in RGB, nicht in Schwarzweiß. Beim Komprimieren mit ImageMagick pdfimages -list
erhält man dagegen:
pdfimages -list outfile-pdftk-imagemagick.pdf
page num type width height color comp bpc enc interp object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
1 0 image 1075 1520 gray 1 8 jpeg no 8 0 130 131 54.0K 3.4%
1 1 smask 1075 1520 gray 1 8 image no 8 0 130 131 25.1K 1.6%
2 2 image 1075 1520 gray 1 8 jpeg no 22 0 130 131 59.9K 3.8%
2 3 smask 1075 1520 gray 1 8 image no 22 0 130 131 25.1K 1.6%
3 4 image 1075 1520 gray 1 8 jpeg no 36 0 130 131 45.2K 2.8%
3 5 smask 1075 1520 gray 1 8 image no 36 0 130 131 25.1K 1.6%
4 6 image 1075 1520 gray 1 8 jpeg no 50 0 130 131 62.8K 3.9%
4 7 smask 1075 1520 gray 1 8 image no 50 0 130 131 25.1K 1.6%
5 8 image 1075 1520 gray 1 8 jpeg no 64 0 130 131 61.1K 3.8%
5 9 smask 1075 1520 gray 1 8 image no 64 0 130 131 25.1K 1.6%
6 10 image 1075 1520 gray 1 8 jpeg no 78 0 130 131 63.4K 4.0%
6 11 smask 1075 1520 gray 1 8 image no 78 0 130 131 25.1K 1.6%
7 12 image 1075 1520 gray 1 8 jpeg no 92 0 130 131 65.1K 4.1%
7 13 smask 1075 1520 gray 1 8 image no 92 0 130 131 25.1K 1.6%
8 14 image 1075 1520 gray 1 8 jpeg no 106 0 130 131 61.0K 3.8%
8 15 smask 1075 1520 gray 1 8 image no 106 0 130 131 25.1K 1.6%
9 16 image 1075 1520 gray 1 8 jpeg no 120 0 130 131 66.8K 4.2%
9 17 smask 1075 1520 gray 1 8 image no 120 0 130 131 25.1K 1.6%
10 18 image 1075 1520 gray 1 8 jpeg no 134 0 130 131 65.6K 4.1%
10 19 smask 1075 1520 gray 1 8 image no 134 0 130 131 25.1K 1.6%
Wie wir sehen können, nehmen die Bilder weniger Platz ein, jedoch wurde der in OCR eingebettete Text entfernt und irgendwie ist die Datei kleiner. Im Vergleich dazu erhalte ich, wenn ich die Originaldatei (ohne OCR-eingebetteten Text) mit Adobe Acrobats "Save As Other> Reduced Size PDF" komprimiere:
pdfimages -list infile-adobe.pdf
page num type width height color comp bpc enc interp object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
1 0 image 1000 1499 gray 1 8 jpx no 38 0 129 129 78.1K 5.3%
2 1 image 1000 1499 gray 1 8 jpx no 3 0 129 129 89.1K 6.1%
3 2 image 1000 1499 gray 1 8 jpx no 6 0 129 129 65.6K 4.5%
4 3 image 1000 1499 gray 1 8 jpx no 9 0 129 129 97.7K 6.7%
5 4 image 1000 1499 gray 1 8 jpx no 12 0 129 129 95.4K 6.5%
6 5 image 1000 1499 gray 1 8 jpx no 15 0 129 129 98.7K 6.7%
7 6 image 1000 1499 gray 1 8 jpx no 18 0 129 129 102K 6.9%
8 7 image 1000 1499 gray 1 8 jpx no 21 0 129 129 94.6K 6.5%
9 8 image 1000 1499 gray 1 8 jpx no 24 0 129 129 105K 7.2%
10 9 image 1000 1499 gray 1 8 jpx no 27 0 129 129 103K 7.1%
... Wie wir sehen können, scheint Adobe Acrobat Bilder mit JPEG2000 (JPX) zu komprimieren, das Ghostscript oder ImageMagick aus Patentgründen nicht zur Verfügung steht.
Gibt es Vorschläge zur Komprimierung von Tesseract-OCR-PDF-Dateien?