Hinzufügen von OCR-Informationen zu einer PDF

28

Ich habe ein Dokument in guter Qualität gescannt. Ein solcher Scan ist im PDF-Format.

Wie kann ich ocr-Informationen zum PDF hinzufügen, damit es durchsuchbar wird? Mit durchsuchbar meine ich, dass das Ziel darin besteht, beim Anzeigen der PDF-Datei mit evince mit STRG-F tatsächlich nach PDF-Inhalten zu suchen.

fdierre
quelle
4
@ Jakob, ich glaube nicht, dass es ein Schwachsinn ist, wir fragen verschiedene Dinge. Die andere Frage betrifft das Extrahieren von Text aus einem PDF (dh das Erzeugen entsprechender txt-Dateien), während meine Frage das Ändern des PDF betrifft, um weitere Informationen hinzuzufügen und die Suchfunktion im PDF-Reader zu aktivieren. Ich werde die Frage klären.
Fdierre
Wie und womit haben Sie das Dokument gescannt?
Mitch
@Mitch Ich habe in meinem Büro den Ricoh Aficio MP-C2500 Drucker / Kopierer / Scanner verwendet, der einen sehr schönen Dokumenteneinzug hat. :-)
fdierre
Scan- und / oder OCR-Software?
Mitch

Antworten:

21

pdfsandwich

Tut was Sie wollen und bietet Ubuntu Deb-Pakete. Es verwendet Tesseract als OCR-Engine. Der folgende Aufruf fügt die Textebene zu Ihrer gescannten PDF hinzu:

pdfsandwich scanned.pdf

Das Folgende funktioniert genauso, jedoch mit einer anderen Sprache (ISO 639-2-Code, Download- tesseract-ocr-LANGCODEPaket) und Einstellung des Layouts:

pdfsandwich  -verbose -lang spa -layout single scanned.pdf

Wenn Sie eine Fehlermeldung erhalten, laden Sie bitte die letzte Version von Sourceforge herunter .

Haftungsausschluss: Ich bin der Entwickler von pdfsandwich und daher offensichtlich voreingenommen.

Tobias Elze
quelle
6
Das ist wirklich toll, danke. Es sieht jedoch so aus, als würden die Bilder modifiziert, als würde eine unscharfe Maske darüber laufen oder so. Gibt es eine Möglichkeit, die Bilder so zu belassen, wie sie zuvor waren? In meinem speziellen Fall gelang es dem Filter sogar, den Balken in einigen Gleichungen aus einigen Brüchen zu entfernen. Alles andere funktioniert aber ganz gut ...
naught101
Paket mit schlechter Qualität: `Lintian-Prüfergebnisse für /tmp/pdfsandwich_0.1.3_amd64.deb: E: pdfsandwich: Steuerdatei hat schlechte Berechtigungen md5sums 0664! = 0644 E: pdfsandwich: Steuerdatei hat schlechten Eigentümer md5sums james / james! = root / root E: pdfsandwich: falsche Datei-Besitzer-UID oder-GID usr / 1000/1000 E: pdfsandwich: falsche Datei-Besitzer-UID oder-GID usr / bin / 1000 / 1000 E: pdfsandwich: Falscher Dateieigner-UID-oder-GID usr / bin / pdfsandwich ...
AB
Laden Sie die letzte Version von deb von SF herunter . Wenn Sie am Ende eine Fehlermeldung erhalten, könnte dies mit Ghostscript (v0.1.4) zusammenhängen. Jetzt wird v0.1.6 verwendet pdfunite.
Pablo A
1
@PabloBianchi Gibt es eine Möglichkeit zum manuellen Korrekturlesen des OCR-Texts mithilfe von pdfsandwitch? Ich mache das mit einigen schwedischen Dokumenten, und es funktioniert gut, mit Ausnahme einiger Rechtschreibfehler (wahrscheinlich aufgrund der Schriftart des Originals), die leicht zu beheben wären, wenn es sich um eine Textdatei handelte, aber wie kann ich dies in der resultierenden PDF tun ?
Zrajm
@zrajm Sie können einige der pdfsandwich-Parameter zur besseren Erkennung des OCR-Schritts verwenden. Um verborgenen Text hinter einem PDF-Bild zu bearbeiten, können Sie die Ebene der Textfelder einfach mit LibreOffice Draw, Inkscape oder einem anderen PDF-Bearbeitungswerkzeug bearbeiten. Wenn Sie einen besseren Weg finden, posten Sie ihn bitte hier. DaH jImej!
Pablo A
9

Es gibt zwei Projekte, die den Trick machen: GScan2PDF und OCRFeeder

Aldi
quelle
4

Ich fand eine nicht ideale, aber sehr effektive Lösung.

Ich benutze PDF X-Change Viewer über Wine. Es verfügt über eine OCR-Funktion, die dem vorhandenen bildbasierten PDF eine Textebene hinzufügt.

So können Sie Text von dieser unsichtbaren Ebene suchen und kopieren.

Bildbeschreibung hier eingeben

Machen
quelle
2

Für eine Befehlszeilenlösung können Sie pdfocr verwenden .

Kurz gesagt, installieren Sie die Software:

$ sudo apt-get install python-software-properties
$ sudo add-apt-repository ppa:gezakovacs/pdfocr
$ sudo apt-get update
$ sudo apt-get install pdfocr

Dann führen Sie pdfocr aus:

$ pdfocr -i scanned.pdf -o scanned.with.search.pdf

Das hat bei mir mit Ubuntu 12.04 LTS geklappt.

Robert Citek
quelle
6
Github hier: github.com/gkovacs/pdfocr . Dies hat jedoch das gleiche Problem wie pdfsandwichdas Ändern / Komprimieren von PDFs mit hohen Bildern, wodurch im Grunde genommen einige der ursprünglichen Bildinformationen zerstört werden.
JMISEREZ
2

Eine Lösung, die einfach zu implementieren ist und ein Ausgabe-PDF mit der gleichen Qualität der Eingabedatei sowie einer angemessenen Größe bietet, ist OCRmyPDF:

https://github.com/jbarlow83/OCRmyPDF

user127022
quelle
Ich habe hervorragende Ergebnisse mit Ihrem Skript erzielt. Im Gegensatz zu pdfocr von Geza Kovacs sind keine zusätzlichen Bibliotheken erforderlich (in einigen Linux-Distributionen schwer zu kompilieren!). Vielen Dank!
Maxim
0

Das ist meine schnelle und schmutzige Lösung auf Basis von ImageMagicks convert, tesseract, parallelund pdftk(alle auf dem Debian-basierten Distributionen). Es basiert größtenteils auf diesem Blogbeitrag .

#!/bin/sh -ex

density=${2:-"300"} # default to 300 DPI if 2nd parameter is not given

convert -monitor -density "$density" "$1" -monochrome -compress lzw -alpha deactivate page_%05d.tif
parallel --bar "tesseract {} {.} pdf 2>/dev/null" ::: page_*.tif
pdftk page_*.pdf cat output "${1%.*}-ocred.pdf" compress

# Cleanup temp files
rm page_?????.tif page_?????.pdf
stefanct
quelle
0

Für das gesamte Verzeichnis mit ppm-Dateien können Sie dieses Skript ppm2ocrpdf.sh verwenden

#!/bin/sh

mkdir .pdf
for f in *.ppm; do
    echo " Running convert -compress JPEG -quality 88 "$f" -page a4 "$f"ppm.pdf"
    convert -compress JPEG -quality 88 "$f" -page a4 "$f"ppm.pdf
    echo " Running tesseract -l deu "$f" "$f" pdf"
    tesseract -l deu "$f" "$f" pdf
    echo " Running pdftk "$f".pdf cat output ./.pdf/"$f"ocr.pdf"
    pdftk "$f".pdf cat output ./.pdf/"$f"ocr.pdf
    echo " Running rm "$f"ppm.pdf"
    rm "$f"ppm.pdf
    echo " Running rm "$f".pdf"
    rm "$f".pdf
done
echo " Running pdftk *.pdf cat output ../outdocument.pdf"
pdftk ./.pdf/*.pdf cat output outOcrDocument.pdf
echo " Running rm ./.pdf/*.pdf"
rm ./.pdf/*.pdf
echo " Running rmdir .pdf"
rmdir .pdf
echo "Done"
PetaT
quelle