Wie extrahiere ich Text aus einer PDF-Datei, die nicht mit einem Index erstellt wurde? Es ist alles Text, aber ich kann nichts suchen oder auswählen. Ich verwende Kubuntu und Okular hat diese Funktion nicht.
Wie extrahiere ich Text aus einer PDF-Datei, die nicht mit einem Index erstellt wurde? Es ist alles Text, aber ich kann nichts suchen oder auswählen. Ich verwende Kubuntu und Okular hat diese Funktion nicht.
Antworten:
Ich hatte Erfolg mit dem BSD-lizenzierten Linux-Port des Cuneiform OCR-Systems.
Da anscheinend keine Binärpakete verfügbar sind, müssen Sie diese aus dem Quellcode erstellen. Stellen Sie sicher, dass die ImageMagick C ++ - Bibliotheken installiert sind, damit im Wesentlichen alle Eingabebildformate unterstützt werden (andernfalls wird nur BMP akzeptiert).
Abgesehen von einer kurzen README-Datei scheint es im Wesentlichen undokumentiert zu sein, aber ich fand die OCR-Ergebnisse ziemlich gut. Das Schöne daran ist, dass es Positionsinformationen für den OCR-Text im hOCR- Format ausgeben kann , so dass es möglich wird, den Text in einer verborgenen Ebene einer PDF-Datei wieder an der richtigen Position abzulegen. Auf diese Weise können Sie durchsuchbare PDF-Dateien erstellen, aus denen Sie Text kopieren können.
Ich habe hocr2pdf verwendet , um PDF-Dateien aus den Original-PDF-Dateien und OCR-Ergebnissen zu erstellen. Leider scheint das Programm das Erstellen mehrseitiger PDFs nicht zu unterstützen, so dass Sie möglicherweise ein Skript erstellen müssen, um damit umzugehen:
#!/bin/bash
# Run OCR on a multi-page PDF file and create a new pdf with the
# extracted text in hidden layer. Requires cuneiform, hocr2pdf, gs.
# Usage: ./dwim.sh input.pdf output.pdf
set -e
input="$1"
output="$2"
tmpdir="$(mktemp -d)"
# extract images of the pages (note: resolution hard-coded)
gs -SDEVICE=tiffg4 -r300x300 -sOutputFile="$tmpdir/page-%04d.tiff" -dNOPAUSE -dBATCH -- "$input"
# OCR each page individually and convert into PDF
for page in "$tmpdir"/page-*.tiff
do
base="${page%.tiff}"
cuneiform -f hocr -o "$base.html" "$page"
hocr2pdf -i "$page" -o "$base.pdf" < "$base.html"
done
# combine the pages into one PDF
gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="$output" "$tmpdir"/page-*.pdf
rm -rf -- "$tmpdir"
Bitte beachten Sie, dass das obige Skript sehr rudimentär ist. Beispielsweise werden keine PDF-Metadaten beibehalten.
aspell check --mode=html "$base.html"
direkt nach dem Ausführen von cuneiform so etwas wie im Skript hinzufügen .
Sehen Sie nach, ob pdftotext für Sie funktioniert. Wenn es nicht auf Ihrem Computer ist, müssen Sie das Paket poppler-utils installieren
sudo apt-get install poppler-utils
Möglicherweise finden Sie auch das PDF-Toolkit .
Eine vollständige Liste der PDF-Software finden Sie hier auf Wikipedia.
Bearbeiten: Da Sie OCR-Funktionen benötigen , denke ich, müssen Sie einen anderen Ansatz versuchen. (dh ich konnte keinen Linux pdf2text Konverter finden, der OCR macht).
PDF in Bild konvertieren
gs: Der folgende Befehl sollte mehrseitige PDF-Dateien in einzelne TIFF-Dateien konvertieren.
gs -SDEVICE = tiffg4 -r600x600 -sPAPERSIZE = Buchstabe -sOutputFile = Dateiname_% 04d.tif -dNOPAUSE -dBATCH - Dateiname
ImageMagik-Dienstprogramme : Auf der SuperUser-Website gibt es weitere Fragen zur Verwendung von ImageMagik, die Sie möglicherweise für die Konvertierung verwenden.
konvertiere foo.pdf foo.png
Konvertieren Sie das Bild mit OCR in Text
Entnommen aus der Wikipedia- Liste der OCR-Software
Google Text & Tabellen werden jetzt OCR verwenden , um Ihre hochgeladenen Bild / PDF - Dokumente in Text zu konvertieren. Ich habe gute Erfolge damit gehabt.
Sie verwenden das OCR-System, das für das gigantische Google Books- Projekt verwendet wird.
Es ist jedoch zu beachten, dass nur PDFs bis zu einer Größe von 2 MB zur Verarbeitung zugelassen werden.
Update
1. Laden Sie zum Ausprobieren ein <2 MB großes PDF-Dokument über einen Webbrowser in Google Docs hoch.
2. Klicken Sie mit der rechten Maustaste auf das hochgeladene Dokument und klicken Sie auf "Mit Google Text & Tabellen öffnen".
... Google Text & Tabellen wird in Text konvertiert und in eine neue Datei mit demselben Namen ausgegeben, aber Google Text & Tabellen gibt denselben Ordner ein.
Geza Kovacs hat ein Ubuntu-Paket erstellt, das im Grunde genommen ein Skript ist, das hocr2pdf
wie von Jukka vorgeschlagen verwendet wird, aber die Einrichtung etwas beschleunigt.
Aus Gezas Ubuntu- Forenbeitrag mit Details zum Paket ...
Hinzufügen des Repositorys und Installieren in Ubuntu
sudo add-apt-repository ppa:gezakovacs/pdfocr
sudo apt-get update
sudo apt-get install pdfocr
Ausführen von ocr für eine Datei
pdfocr -i input.pdf -o output.pdf
GitHub-Repository für den Code https://github.com/gkovacs/pdfocr/
Der beste und einfachste Weg, es zu benutzen pypdfocr
, ändert das PDF nicht
pypdfocr your_document.pdf
Am Ende haben Sie einen anderen, your_document_ocr.pdf
wie Sie es mit durchsuchbarem Text wollen. Die App ändert die Bildqualität nicht. Erhöht die Größe der Datei ein wenig, indem der Overlay-Text hinzugefügt wird.
pypdfocr
wird seit 2016 nicht mehr unterstützt und ich habe einige Probleme festgestellt, weil ich nicht betreut wurde. ocrmypdf
( Modul ) erledigt einen ähnlichen Job und kann wie folgt verwendet werden:
ocrmypdf in.pdf out.pdf
Installieren:
pip install ocrmypdf
oder
apt install ocrmypdf
PDFBeads funktioniert gut für mich. Dieser Thread „ Konvertieren gescannter Bilder in eine einzelne PDF-Datei “ hat mich zum Laufen gebracht. Für einen Schwarzweiß-Buchscan müssen Sie:
Führen Sie in dem neuen Ordner aus
pdfbeads * > ../Output.pdf
Dadurch wird die sortierte OCR-PDF im übergeordneten Verzeichnis abgelegt.
ein anderes Skript mit tesseract:
#!/bin/bash
# Run OCR on a multi-page PDF file and create a txt with the
# extracted text in hidden layer. Requires tesseract, gs.
# Usage: ./pdf2ocr.sh input.pdf output.txt
set -e
input="$1"
output="$2"
tmpdir="$(mktemp -d)"
# extract images of the pages (note: resolution hard-coded)
gs -SDEVICE=tiff24nc -r300x300 -sOutputFile="$tmpdir/page-%04d.tiff" -dNOPAUSE -dBATCH -- "$input"
# OCR each page individually and convert into PDF
for page in "$tmpdir"/page-*.tiff
do
base="${page%.tiff}"
tesseract "$base.tiff" $base
done
# combine the pages into one txt
cat "$tmpdir"/page-*.txt > $output
rm -rf -- "$tmpdir"
Asprise OCR Library funktioniert unter den meisten Linux-Versionen. Es kann PDF-Eingabe und Ausgabe als PDF-Suche nehmen.
Es ist ein kommerzielles Paket. Laden Sie hier eine kostenlose Version des Asprise OCR SDK für Linux herunter und führen Sie es folgendermaßen aus:
aocr.sh input.pdf pdf
Hinweis: Das eigenständige PDF gibt das Ausgabeformat an.
Haftungsausschluss: Ich bin ein Mitarbeiter der Firma, die das obige Produkt herstellt.
Probieren Sie Apache PDFBox aus , um Textinhalte aus einer PDF-Datei zu extrahieren. Verwenden Sie bei in PDF-Dateien eingebetteten Bildern ABBYY FineReader Engine CLI für Linux , um Text zu extrahieren.