Ich möchte das Gegenteil von OCR machen, ich möchte keine Bilder in Text umwandeln, ich möchte den gesamten Text in einer PDF in ein Bild umwandeln, damit er nicht zufällig ausgewählt und kopiert werden kann.
In Acrobat Pro ist alles in Ordnung, aber ich hätte wirklich gerne etwas, das ich über eine Linux-Befehlszeile verwenden kann, da ich eine Menge dieser PDFs zu tun habe und sie sich derzeit auf einer Website befinden. Wenn ich diese Änderung auf dem Server vornehmen könnte, würde ich stundenlanges Herunterladen, Verarbeiten in Acrobat und erneutes Hochladen sparen, was über die sehr langsame CMS-Oberfläche erfolgen muss.
Wenn es also ein PDF-Tool gibt, das dies problemlos erledigt, kann ich es vom Terminal aus verwenden, das wäre fantastisch.
Antworten:
Ich nehme an, Ihr Ziel ist es , die Auswahl und das Kopieren von Text aus einer PDF-Datei zu erschweren . Denn das ist das einzig erreichbare Ziel, das Sie aufstellen können. (Wenn es eine Möglichkeit gibt, die PDF-Seiten auf dem Bildschirm anzuzeigen, gibt es eine Möglichkeit, irgendwie auf den Text- oder Bildinhalt zuzugreifen, auch wenn dies schwieriger ist als nur das Kopieren und Einfügen bewusst, dass.)
Sie haben drei Möglichkeiten:
Jede dieser drei Methoden ist mit dem richtigen Werkzeug sehr einfach anzuwenden. :-)
Für jede dieser Methoden können Sie ein Tool für freie und Open Source-Software in der Befehlszeile verwenden. (Jedes dieser Tools ist für Linux, Mac OSX, Unix oder Windows verfügbar.)
Weitere Informationen zu den einzelnen Methoden finden Sie weiter unten.
1. Erstellen Sie ganzseitige Pixelbilder (mit ImageMagick
convert
)Sie können mit ImageMagick ‚s
convert
Befehl einfach wie folgt aus :ImageMagick kann direkt nur mit Rasterbildern arbeiten , nicht mit einem anderen Format. Da PDFs nicht direkt verarbeitet werden können, wird Ghostscript automatisch als Stellvertreter verwendet . Daher muss auch Ghostscript installiert sein! Ghostscript erstellt die Rasterbilder, die von ImageMagick als Eingabe benötigt werden.
Sie können den Prozess von ImageMagick beobachten, indem Sie Ghostscript als Hintergrundprozess verwenden, indem Sie
-verbose
Ihrer Befehlszeile einen Schalter hinzufügen .Standardmäßig
convert
wird eine Auflösung von 72ppi verwendet. Dies ist möglicherweise nicht gut genug zum Lesen (aber es wird viel schwieriger sein, Ihren "Schutz" durch Anwenden von OCR-Software auf die Ausgabe zu umgehen .)Das obige Bild zeigt einen Screenshot einer pixeligen PDF-Seite, die mit der von ImageMagick bei einer Zoomstufe von 600% verwendeten Standardauflösung (72 PPI) erstellt wurde. Wenn Sie eine bessere Auflösung benötigen, z. B. 200 PPI, fügen Sie den
-density 200
Parameter in die Befehlszeile ein:Das obige Bild zeigt die Aufnahme (ebenfalls bei einer Zoomstufe von 600%) einer pixeligen PDF-Seite, die von ImageMagick mit einer höheren Auflösung von 200 PPI erstellt wurde.
Beachten Sie, dass beim Testen des obigen Befehls mit der Standardauflösung von 72 PPI eine 219-seitige PDF-Datei mit dem gesamten Text und einer Größe von 1 MByte eine Ausgabedatei von 23 MByte ergab. Die Generierung auf einem MacBook dauerte ca. 2 Minuten. Das 200ppi PDF hat 110 MByte ergeben und es hat 11 Minuten gedauert, bis es fertig ist ...
Umgehen?
Es ist einfach, die Pixelung von Seiten zu umgehen, wenn die Auflösung gut genug ist: OCR funktioniert einwandfrei. Mit einer geringen Auflösung ist es für den Menschen möglicherweise noch lesbar (und erratbar), für Maschinen jedoch schwierig, gute OCR-Ergebnisse zu erzielen.
2. Alle Glyphen in Vektorumrisse konvertieren (mit Ghostscript)
Sie können die neueste und neueste Version von Ghostscript verwenden. Das ist Version 9.15 . Überprüfen Sie Ihre installierte Version mit
gs -version
.Die neueste Version 9.15 enthält einen neuen Befehlszeilenparameter
--dNoOutputFonts
. Dieser Parameter konvertiert alle Glyphenformen in Konturen und entfernt alle eingebetteten Schriftarten:In meinem Test wurde dieselbe 219-seitige PDF-Datei (mit einer Größe von 1 MByte) in eine Ausgabedatei von 186 MByte konvertiert, wobei die Konvertierung 6 Minuten in Anspruch nahm.
Der Vorteil von Konturen besteht darin, dass der Text der Seite klar und scharf bleibt und keine Pixel aufweist. Sie können den Text auf jeder Ebene vergrößern, ohne an Schärfe zu verlieren. Das sehen Sie im nächsten Screenshot:
Der Nachteil ist die Dateigröße. (Übrigens habe ich die gleiche Methode zum Konvertieren von Text in Konturen mit Adobe Acrobat Pro XI getestet. Die resultierende Dateigröße betrug 61 MByte und dauerte 15 Minuten.)
Umgehen?
Diese Maßnahme lässt sich leicht umgehen: OCR funktioniert einwandfrei.
3. Schützen Sie PDF, indem Sie es "verschlüsseln" (Using
qpdf
)Was nicht so gut bekannt ist, ist, dass Sie ein PDF mit leeren Passwörtern (den Passwörtern "Benutzer" und "Eigentümer") "schützen" oder "verschlüsseln" können . Auf diese Weise kann jede PDF Reader / Viewer-Software die Datei öffnen, ohne nach einem Kennwort zu fragen. Das Kennwortdialogfeld wird nur angezeigt, wenn Sie versuchen, Text von einer Seite zu kopieren oder die Datei zu drucken.
QPDF hat dafür eine recht gute Unterstützung:
Was bedeuten all diese Befehlsoptionen?
--encrypt "" "" 40
:Dies setzt sowohl die Passwörter (Benutzer und Besitzer) auf die leere Zeichenkette als auch die Schlüssellänge auf 40 Bit.
--print=n
:Deaktiviert das Drucken der PDF-Datei.
--modify=n
:Deaktiviert die Änderung der PDF-Datei.
--extract=n
:Deaktiviert die Text- und Bildextraktion der PDF-Datei.
--
:Dies ist erforderlich, um das Ende der Verschlüsselungsoptionen anzuzeigen.
Wenn Sie eine 128- oder 256-Bit-Schlüssellänge verwenden, stehen in QPDF detailliertere (und andere) Optionen zur Verfügung. Zu den weiteren verfügbaren Optionen gehören
--modify=[annotate|form|assembly]
das Ausfüllen von Formularen, das Hinzufügen von Anmerkungen oder das Zusammenfügen des Dokuments mit anderen PDF-Dateien (wobei Copy'n'Paste oder Drucken weiterhin verboten sind).Dieser Befehl
Zeigt die Details zu den Verschlüsselungseinstellungen einer Datei an. Beispiel:
Übrigens: Wenn Sie das Kennwort in den beiden oben gezeigten Dialogfeldern leer lassen, kann dies bei (den meisten? Oder allen? Nicht getesteten ...) PDF-Viewern nicht hilfreich sein. Es kann immer noch nicht zum Kopieren oder Drucken entsperrt werden.
Der Vorteil dieser Methode liegt in der schnellen Ausführung und der nahezu identischen Dateigröße.
Umgehen?
Natürlich ist es genauso einfach, die 'Verschlüsselung' wieder zu entfernen:
4. Zusammenfassung
Verwenden Sie für schnelle Ergebnisse, identische Dateigrößen und einen einfach zu entfernenden Schutz gegen "zufälliges" Auswählen und Kopieren von Text "Schutz" / "Verschlüsselung" mit einem leeren Kennwort.
Verwenden Sie für langsame Ergebnisse und möglicherweise große Dateigrößen (aber nicht immer gut aussehende Seiten) und etwas mehr Arbeit, um den Schutz zu entfernen, die Pixelung für alle Seiten.
Verwenden Sie für noch langsamere Ergebnisse (aber immer besser aussehende Seiten) und auch für das Entfernen des Schutzes die Vektorumrissmethode für den gesamten Text.
Beachten Sie immer, dass all diese Methoden den Inhalt Ihrer PDF-Seiten nicht absolut schützen. Sie machen es nur umständlicher zu extrahieren.
quelle
Am besten konvertieren Sie die PDF-Datei mit ImageMagick über die Befehlszeile in Bilder aller Art. Diese Site bietet einige anständige Details zur Verwendung von PHP mit ImageMagick, um diese Aufgabe zu automatisieren. Auf einer sehr grundlegenden Ebene werden auf dieser Site die Grundlagen dazu über die Terminalbefehlszeile erläutert :
Um das Ausgabeformat von PNG in JPEG zu ändern, ändern Sie einfach die Dateierweiterung des Zieldateinamens wie folgt:
Der Trick in Ihrem Fall ist, dass Sie sicherstellen müssen, dass auf Ihrem Hosting-Service ImageMagick installiert ist. Und wenn nicht, wären sie bereit, es zu installieren. Nach meiner Erfahrung ist ImageMagick ein so häufig verwendetes Tool, dass es vorhanden sein sollte. Das einzige potenzielle "gotcha" ist, dass die Installation nicht mit eingebauter PDF-Unterstützung durchgeführt wurde. Aber damit müssen Sie sich auseinandersetzen.
Wenn Sie einzelne Bilddateien aus der PDF-Datei erstellen, ist es auch einfach genug, eine neue PDF-Datei mit diesen Bilddateien zu erstellen:
Es scheint auch, dass
convert
PDF direkt in PDF konvertiert werden kann, wobei das Endprodukt durch einfaches Ausführen der folgenden Schritte gerastert wird:Das würde ein PDF mit gerasterter Ausgabe bei 72 dpi erzeugen. Sie können dies gegebenenfalls anpassen, indem Sie die folgende
-density
Option verwenden:Das würde ein neues PDF erzeugen, das aus gerasterten Bildern mit 144 dpi besteht.
quelle
convert *.jpg my_new_great_file.pdf
. Schau dir meine Bearbeitung an.-density
), um bei Bedarf eine Rasterung zu erzwingen.convert
(die einen beschäftigt Ghost Delegierten ohnehin für PDF Dolmetschen) zur direkten PDF-to-PDF - Konvertierung :convert vector.pdf rasterized.pdf
Gibt alle Seiten des Eingang vector.pdf als rasterized.pdf in dem alle Seiten auf die Bilder mit der Standardauflösung gemacht werden von 72 PPI. Um eine höhere Auflösung in der Ausgabe von beispielsweise 200 PPI zu erhalten, fügen Sie einfach-density 200
...Sie können verwenden
pdftk
:Dadurch wird ein Kennwort festgelegt, das ModifyContents und CopyContents deaktiviert, ScreenReaders jedoch zulässt.
Etwas, das nicht von Java abhängt, wäre qpdf, aber ich habe nicht die genaue Syntax zur Hand.
quelle
qpdf
, um Personen gerecht zu werden, die kein Java haben. Abgesehen davon ist dies nichts, was die UX ändern würde, da das "Passwort" nur Beschränkungen für die Datei festlegt. Alles , was Sie möglicherweise mit den Dateien tun, hilft nicht wirklich , da der auf dem Bildschirm angezeigte Text leicht OCR-fähig ist.