Wenn Sie eine Seite mit Text in eine PDF-Datei scannen und eine OCR-Anwendung darauf ausführen, wird der Text zur Seite hinzugefügt, der "Textwiedergabemodus" ist jedoch unsichtbar. Es ist da, aber es wird nicht auf dem Bildschirm gerendert (oder auf Papier, wenn es gedruckt wird). Was Sie sehen oder drucken, ist das gescannte Originalbild.
Wie können wir den unsichtbaren Text sichtbar machen?
Nun, wir können das PDF bearbeiten ... Der PDF-Code, um das Rendern von Text auf unsichtbar zu setzen, lautet wie folgt:
3 Tr
Sie können diese Zeichenfolge (noch) weder im Original from_abbyy.pdf noch in from_ghostscript.pdf finden, da Teile der PDFs komprimiert sind. Deshalb dekomprimieren wir sie so weit wie möglich mit Hilfe von qpdf
:
qpdf \
--qdf \
from_abbyy.pdf \
qdf--from_abbyy.pdf
qpdf \
--qdf \
after_ghostscript.pdf \
qdf--after_ghostscript.pdf
Jetzt können wir die obige Zeichenfolge leicht finden (und es gibt nur ein Vorkommen in jeder Datei).
Lassen Sie uns dies auf einen der sichtbaren Modi der Textwiedergabe umschalten. Insgesamt können wir zwischen diesen 8 Textwiedergabemodi wählen:
0 - fill glyph shapes
1 - stroke glyph shapes
2 - fill, then stroke glyph shapes
3 - neither fill nor stroke glyph shapes (invisible)
4 - fill and add to path for clipping glyph shapes
5 - stroke glyph shapes and add to path for clipping
6 - fill, then stroke glyph shapes and add path for clipping
7 - add glyph shapes to path for clipping
Wenn ich den "Füll" -Modus verwende, sieht der Text aus der OCR über dem zugrunde liegenden Scanbild wahrscheinlich nicht so gut aus. Deshalb bevorzuge ich die "Schlaganfall" -Variante. Also wechsle ich einfach über die Zeile, um zu lesen
1 Tr
Wenn ich mir dieses modifizierte PDF anschaue, mag ich es nicht, weil die Standardlinienbreite für meinen Geschmack zu dick ist. Außerdem ist die Farbe des Umrissstrichs schwarz (Standard). Ich würde Rot bevorzugen, um einen Kontrast zu den ursprünglich gescannten Formen zu haben. Deshalb füge ich am Anfang dieser Zeile Code hinzu, der die Zeilenbreite auf einen Viertelpunkt festlegt:
.25 w
und einige andere, um die Strichfarbe auf Rot zu setzen:
1 0 0 RG
Die komplette Zeile lautet jetzt:
.25 w 1 0 0 RG 1 Tr
Das ist alles.
Beachten Sie, dass unsere kleine Manipulation die Datei beschädigt hat, da ihr "Inhaltsverzeichnis" (in technischen Begriffen: seine xref
Tabelle) jetzt nicht mehr gültig ist. Acrobat Reader oder Acrobat Professional öffnen es trotzdem (ohne sich zu beschweren) und "reparieren" den xref-Abschnitt der Datei stillschweigend. Andere PDF-Viewer lehnen die Datei möglicherweise ab, aber im Moment ist es uns egal ...
Hier sind Screenshots des Ergebnisses:
(Der erste Screenshot wird auf Fensterbreite gezoomt.)
(Der zweite Screenshot wird auf 800% gezoomt.)
Die roten Umrisse sind der gescannte Text, der jetzt so sichtbar gemacht wird, wie wir es wollten.
Ich habe das gleiche Verfahren wie oben für beide Dateien aus_abbyy.pdf und after_ghostscript.pdf beschrieben . Ich habe beide Ergebnisse in 2 verschiedenen Instanzen von Acrobat Reader geöffnet. Wenn wir beide auf den gleichen Wert zoomen lassen und beide Fenster maximieren, ist es einfach, die Ansicht zwischen beiden Dateien über umzuschalten [alt]+[tab]
. Dies ist eine gute Möglichkeit, selbst die feinsten Rendering-Unterschiede zwischen zwei PDF-Dateien aufzudecken.
Mein Ergebnis ist: Es gibt nicht einmal ein einziges Pixel, das sich zwischen der Eingabe von Ghostscript (v9.02) und der Ausgabe für diese Datei unterscheidet. Aber es gibt einen großen Unterschied, ob Sie Text kopieren und einfügen möchten ...