it-swarm.com.de

Wie extrahiere ich Text mit OCR aus einem PDF unter Linux?

Wie extrahiere ich Text aus einem PDF, der 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.

41
hsribei

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).

Obwohl es abgesehen von einer kurzen README -Datei im Wesentlichen undokumentiert zu sein scheint, habe ich die OCR-Ergebnisse für ziemlich gut befunden. 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 wieder in das Feld einzufügen Die richtige Position in einer verborgenen Ebene einer PDF Datei. Auf diese Weise können Sie durchsuchbare PDF-Dateien erstellen, aus denen Sie Text kopieren können.

Ich habe hocr2pdf verwendet, um PDFs aus den Original-PDFs mit Nur-Bild und OCR-Ergebnissen neu 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 diese zu verarbeiten:

#!/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 gespeichert.

25

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 zur Verwendung.

Eine vollständige Liste der PDF-Software finden Sie hier auf Wikipedia.

Edit: Da Sie OCR-Funktionen benötigen, müssen Sie meines Erachtens einen anderen Ansatz wählen. (d. h. ich konnte keinen Linux pdf2text-Konverter finden, der OCR ausführt).

  • Konvertieren Sie das PDF in ein Bild
  • Scannen Sie das Bild mit den OCR-Werkzeugen in Text

PDF in Bild konvertieren

  • gs: Mit dem folgenden Befehl sollten mehrseitige PDF-Dateien in einzelne TIFF-Dateien konvertiert werden.

    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

Bild mit OCR in Text konvertieren

Entnommen aus der Wikipedia-Liste der OCR-Software

13
nagul

Google Text & Tabellen verwendet jetzt OCR, um Ihre hochgeladenen Bild-/PDF-Dokumente zu konvertieren jemandem eine SMS schicken. 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.

11
Russ

Geza Kovacs hat ein Ubuntu-Paket erstellt, das im Grunde ein Skript ist, das hocr2pdf verwendet, wie Jukka vorgeschlagen hat, 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/

2
ryanjdillon

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:

  1. Erstellen Sie ein Bild für jede Seite der PDF-Datei. eines der obigen gs-Beispiele sollte funktionieren
  2. Generieren Sie eine hOCR-Ausgabe für jede Seite. Ich habe Tesseract verwendet (aber beachte, dass Keilschrift besser zu funktionieren scheint).
  3. Verschieben Sie die Bilder und die hOCR-Dateien in einen neuen Ordner. Die Dateinamen müssen übereinstimmen, daher benötigt file001.tif file001.html, file002.tif file002.html usw.
  4. Führen Sie in dem neuen Ordner aus

    pdfbeads * > ../Output.pdf
    

Dadurch wird das sortierte, mit OCR versehene PDF im übergeordneten Verzeichnis abgelegt.

1
scruss

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"
1
tolima

Der beste und einfachste Weg, pypdfocr zu verwenden, ä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.

Update 3. November 2018:

pypdfocr wird seit 2016 nicht mehr unterstützt und ich habe einige Probleme festgestellt, weil ich nicht betreut wurde. ocrmypdf ( module ) erledigt einen ähnlichen Job und kann folgendermaßen verwendet werden:

ocrmypdf in.pdf out.pdf

Installieren:

pip install ocrmypdf

oder

apt install ocrmypdf
1

Asprise OCR Library funktioniert unter den meisten Linux-Versionen. Es kann PDF als Such-PDF eingegeben und ausgegeben werden.

Es ist ein kommerzielles Paket. Laden Sie hier eine kostenlose Kopie des Asprise OCR SDK für Linux herunter und führen Sie sie 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.

1
Asprise Support

Versuchen Sie Apache PDFBox , um Textinhalte aus PDF File zu extrahieren. Bei Bildern, die in PDF -Dateien eingebettet sind, verwenden Sie ABBYY FineReader Engine CLI für Linux , um Text zu extrahieren.

0