Wie komprimiere ich Tesseract-kodierte PDFs, während der eingebettete Text von OCR erhalten bleibt?

1219
Jason

Ich habe mit Tesseract experimentiert, um meine PDFs zu OCR zu machen, 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 OCRing komprimieren möchte. Wenn ich jedoch Ghostscript zum Komprimieren der Dateien verwende, ist der eingebettete OCR-Text durcheinander geraten. Wenn ich ImageMagick verwende, wird der eingebettete Text ebenfalls entfernt. Gibt es da einen Weg? Theoretisch könnte ich vor dem OCRing komprimieren, aber das würde die OCR-Genauigkeit verschlechtern.

Im Allgemeinen ist es mein Ziel, einen qualitativ hochwertigen OCR-eingebetteten Text in meinen PDF-Ausgabedateien zu haben und die eingebetteten Bilder stark zu komprimieren, sodass die Dateien nicht annähernd so viel Speicherplatz beanspruchen. Ich habe festgestellt, dass die Adobe Acrobat Pro-Funktion "Als andere speichern> Reduziertes PDF-Format" die Bilder stark komprimiert, jedoch den OCR-Text verschraubt. Dies gilt unabhängig davon, ob die Dateien in Acrobat OCR-Datei waren oder ein Tool wie Tesseract verwendet.

Hier ist mein aktueller Workflow mit einem Beispiel-PDF .

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 

Tesseract für jede der TIFF-Dateien ausführen (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 verschraubt
  • 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, aber die Datei irgendwie größer macht
  • Und wenn ich 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 zu OCR zu machen, nicht die Ausgabe zu komprimieren.

Auf den ursprünglichen Tesseract-OCR-Dateien wird beispielsweise Folgendes pdfimages -list temp/page_001.pdf.tiff.pdferzeugt:

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 bedeutet, dass das Bildobjekt im PDF nicht exakt optimal gespeichert ist. Es ist immer noch in RGB, nicht in Schwarzweiß. Beim Komprimieren mit ImageMagick pdfimages -listergibt sich 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, benötigen die Bilder weniger Platz, jedoch wurde der in OCR eingebettete Text entfernt, und irgendwie ist die Datei weniger. Wenn ich dagegen die Originaldatei (ohne OCR-eingebetteten Text) nehme und sie mit Adobe Acrobats "Speichern unter"> "PDF verkleinern" komprimiere, erhalte ich Folgendes:

 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 Sie sehen, scheint Adobe Acrobat Bilder mit JPEG2000 (JPX) zu komprimieren, was Ghostscript oder ImageMagick aufgrund von Patentproblemen nicht zur Verfügung steht.

Im Allgemeinen Vorschläge zur Komprimierung von Tesseract-OCR-PDF-Dateien?

2
Eines der "ungeraden" Tools, die ich verwende, ist [PDFFill] (https://www.pdfill.com/freewriter_pdf.html#1), mit dem PDF-Dateien optimiert werden können. Ich bin nicht sicher, ob es JPEG2000 beherrscht, aber es ist einen Versuch wert. le_top vor 7 Jahren 0
Warum brauchst du die Bilder? Sie scheinen nur den Hintergrund des Textes zu enthalten. Ohne sie dauert die Datei etwa 70 K (getestet, obwohl ich keinen guten PDF-Editor habe und der Text danach in einer schlechten Reihenfolge war). harrymc vor 7 Jahren 0
@harrymc Ich brauche die Bilder, weil ich sie mit Notizen markieren möchte, und weil die OCR nicht zu 100% genau ist. So kann ich das Original sehen und damit in meinem PDF-Reader arbeiten. Jason vor 7 Jahren 0
Wenn ich es richtig verstehe, kombinieren Sie den OCR-Text und das ursprüngliche Seitenbild in einer einzigen PDF-Datei. Da die Textgröße vernachlässigbar ist, besteht die einzige Verbesserung darin, die Bilder zu minimieren, indem sie in ein verlustbehaftetes Format konvertiert werden - jpeg ist Am besten mit niedriger Qualität und hoher Komprimierung (damit Text lesbar ist, ist keine hohe Qualität erforderlich). harrymc vor 7 Jahren 0
@ harrymc Richtig, sobald der Text da ist, möchte ich die Bilder komprimieren, aber das Komprimieren mit Ghostscript oder sogar Adobe scheint den OCR-Text zu vermasseln, der dann den gesamten Zweck zerstört. Siehe zum Beispiel [diese Ausgabedatei, die ich mit Tesseract OCR gemacht und dann mit Ghostscript komprimiert habe, wodurch der OCR-Text entstellt und unterbrochen wird.] (Https://www.dropbox.com/s/pt3qokaj0d4sc8l/outfile- ghostscript.pdf? dl = 0) Versuchen Sie, etwas Text zu kopieren / einzufügen. Jason vor 7 Jahren 0
Es scheint, als würden Sie die gesamte PDF-Datei komprimieren, anstatt die Bilder zu komprimieren und dann die PDF-Datei zu erstellen. harrymc vor 7 Jahren 0
@Jason Minor point ... Sofern Sie nicht vorhaben, Dateien auf unbestimmte Zeit zu hosten, verlinken Sie bitte nicht in die Dropbox. Ich würde gerne Ihre verstümmelten PDFs sehen und es ist 404. Basic vor 5 Jahren 0

0 Antworten auf die Frage