Machen Sie vorhandene PDF-Dokumente über die Befehlszeile / das Skript durchsuchbar (OCR)

21

Ich suche nach einem Offline-Skript-Tool, mit dem eine vorhandene PDF-Datei durchsuchbar wird, indem OCR darauf ausgeführt wird, die ursprüngliche nicht durchsuchbare Datei durch die durchsuchbare Version ersetzt wird und das unbeaufsichtigt ausgeführt werden kann.

ZB www.pdfscannerapp.com - macht genau das, was ich brauche, aber es ist nur GUI - nicht skriptfähig.

Mir ist bekannt, dass Evernote PDF-Dateien durchsuchbar macht, aber sie bleiben nur in Evernote durchsuchbar.

Ich bin nicht auf der Suche nach perfekter Texterkennung, auch eine mäßig akzeptable Texterkennung ist in Ordnung, aber ich würde ein kleines Dienstprogramm einem sperrigen Softwarepaket vorziehen.

(Ich kenne eine ähnliche, aber andere Frage zu AD: Auf der Suche nach Software zum Scannen oder Konvertieren in durchsuchbare und signierbare PDF-Dateien . Ich muss jedoch keine PDF-Dateien signieren oder ausfüllen, und meine Anforderung ist, dass die Lösung skriptfähig ist.)

BEARBEITEN:

1) Mehrere Dienstprogramme ermöglichen die Extraktion von strukturiertem Text. Um jedoch extrahiert zu werden, muss der Text vorhanden sein. Ich beziehe mich hauptsächlich auf PDFs, bei denen es sich um um umbrochene Bitmaps handelt, wie dies bei einfachen PDFs der Fall ist, die von Scannern generiert wurden.

2) Ich bin nicht unbedingt auf der Suche nach einer kostenlosen Lösung und würde gerne für ein gutes Dienstprogramm bezahlen, das genau das tut, was ich brauche, aber ich bin nicht auf der Suche nach umfangreichen Anwendungen mit einer Million Funktionen, die aber eine OCR-Funktion enthalten Wessen Kosten rechtfertigen den Kauf nicht nur für die OCR-Funktionalität.

3) Wie oben erwähnt, suche ich keine perfekte Texterkennung, sondern nur eine mäßig akzeptable Texterkennung. Leider liegt Tesseract meiner Erfahrung nach tatsächlich unter dieser Schwelle. Ich definiere "mäßig akzeptabel" eine OCR, die beispielsweise eine Nebenkostenabrechnung erkennen kann, so dass mindestens die Kontonummer (Kundennummer) korrekt erkannt wird.

BEARBEITEN: "skriptfähig" oder "automatisierbar", dh es kann automatisch ausgelöst und unbeaufsichtigt ohne menschliche Eingaben ausgeführt werden.

Magma
quelle
2
... wissen nicht, wie schwierig das ist, aber Tesseract OCR hat in Unix.SE häufig code.google.com/p/tesseract-ocr und OCR erwähnt .
hhh
1
Es gibt eine ähnliche Frage hier , nicht die Antwort Ihre Anforderungen paßt?
Nohillside
1
Sie erwähnen OCR. Umfassen Ihre Anforderungen den Umgang mit Bildern in PDF-Dateien oder gescannten PDF-Dateien? Bei Dateien, in denen Text als einfaches Postscript enthalten ist, funktioniert möglicherweise ein PDF-Text-Konverter wie "PDF2Text Pilot".
Tim B
@patrix Ich suchte nach einem kleineren Dienstprogramm, nicht unbedingt kostenlos, aber in einer anderen Preisklasse. Trotzdem ist es eine mögliche Lösung, danke.
Magma
@ TimothyButler leider habe ich es mit gescannten PDFs (Bilder) zu tun. Aber netter Hinweis, danke.
Magma

Antworten:

5

Mir ist nicht ganz klar, was Ihre Anforderungen sind, um dies von der "Kommandozeile" aus "skripten" zu können.

Wenn Sie über Automatisierung sprechen, ist dies mit einer beliebigen Anzahl von Dienstprogrammen möglich.

ABBYY FineReader Express + Keyboard Maestro + Hazel

Ich benutze ABBYY FineReader Express + Keyboard Maestro + Hazel wie folgt:

  1. Hazel überwacht einen bestimmten Ordner auf neue PDFs

  2. Wird ein PDF gefunden, wird es in "ABBYY FineReader Express" geöffnet.

  3. Keyboard Maestro automatisiert dann das Umwandeln der PDF-Datei in eine durchsuchbare PDF-Datei (Searchable PDF, OCR) und speichert die Datei in einem anderen Verzeichnis.

Wenn Sie Hazel und Keyboard Maestro noch nicht besitzen, werden Ihre anfänglichen Kosten ziemlich schnell steigen (obwohl ich so sehr von beiden abhängig bin, dass ich sie für ein Schnäppchen halte).

PDFPen + AppleScript + Ordneraktionen

Sie könnten etwas Ähnliches mit PDFPen (oder PDFPenPro) und Ordneraktionen und AppleScript tun. Ein Beispiel finden Sie unter https://gist.github.com/prenagha/1355037 .

Marco Arment hat eine Umfrage unter OCR-Apps für Mac durchgeführt und festgestellt, dass PDFPen hervorragende Ergebnisse erzielt und einfach zu automatisieren ist.

Eine Google-Suche nach "PDFpen Applescript OCR" wird eine Reihe von Alternativen aufzeigen.

TJ Luoma
quelle
gute Antwort TJ. Hazel ist unglaublich, ich besitze es und ich genieße es, es immens zu benutzen. Ich besitze derzeit keinen Abbyy / Keyboard Maestro, aber Hazel + PDFPen ist eine erstaunliche Kombination. Obwohl alle Antworten hier im Allgemeinen sehr gut sind und ein leicht unterschiedliches Publikum bedienen, halte ich Hazel + PDFPen für eine gute Lösung für das ursprüngliche Problem. Akzeptiert.
Magma
+1 auf ABBYYFineReader Express, der derzeit einfach besten Texterkennung, und ich habe fast ein Dutzend meiner eigenen Projekte
durchlaufen
12

Was Sie wollen, ist Tesseract OCR. Es ist eine Open-Source-OCR, die von Google verwaltet wird und eine Vielzahl von Plattformen unterstützt. Es hat auch eine native Befehlszeilenschnittstelle. Es ist genau das, was Sie suchen und es ist sowohl im Mac-Ports-Projekt als auch im Homebrew erhältlich .

Projekt-Startseite: https://github.com/tesseract-ocr

So installieren Sie unter OS X: http://blog.matt-swain.com/post/26419042500/installing-tesseract-ocr-on-mac-os-x-lion

Anwendungsbeispiel: tesseract -l eng input.pdf output

Daniel Kocevski
quelle
Schönes Projekt. In meinen Tests war die Erkennung schlecht, aber ich bin mir sicher, dass dies von meiner Unfähigkeit abhängt, sie zu optimieren. Ich suchte nach einer einfacheren Lösung, aber dies könnte eine gute Wahl sein, besonders wenn Sie mehr Kontrolle wünschen und Zeit dafür investieren können.
Magma
tesseract wird im Vergleich zu aktuelleren proprietären Apps nicht sehr gut. Insbesondere hat es Probleme mit der Codierung und der Mathematik, und es werden oft viele griechische Zeichen ausgegeben.
TechZen
Ermöglicht die OS X-Version PDF-Eingaben? Die Windows-Version nicht.
Doug,
8

Haftungsausschluss: KEINE OCR-LÖSUNG (aber diese Antwort ist immer noch nützlich, um Text aus PDF zu extrahieren)

Es gibt ein Apache Software Foundation-Projekt namens Apache Tika :

Ein Toolkit erkennt und extrahiert Metadaten und strukturierten Textinhalt aus verschiedenen Dokumenten mithilfe vorhandener Parser-Bibliotheken

Sie unterstützen die PDF- Textextraktion mit PDFBox :

Ermöglicht die Erstellung neuer PDF-Dokumente, die Bearbeitung vorhandener Dokumente und das Extrahieren von Inhalten aus Dokumenten. Apache PDFBox enthält auch mehrere Befehlszeilenprogramme

Und sie haben kürzlich auch Unterstützung für OCR hinzugefügt (über Tesserac)

Bei einer textbasierten Lösung ist es mit PDFBox sehr einfach, Text aus einer PDF-Datei zu extrahieren:

Es hat auch einige andere nette Optionen, die Sie in ExtractText-Dokumenten sehen können .

brutuscat
quelle
Auf jeden Fall eine gute Option zum Extrahieren von Text, aber ich kann keine OCR-Funktion erkennen.
Magma
1
@magma OCR bedeutet "optische Zeichenerkennung", es gibt definitiv "OCR-Fähigkeit". Jetzt müssen Sie klären: Ist es Ihr Problem, Text aus Bildern mit schlechter Auflösung zu extrahieren, wie sie mit einer VGA-Kamera, einem schlechten Scanner oder einem entfernten Bild erzeugt wurden? Dann ist Ihr Problem anders und erfordert physikalische Überlegungen wie Superauflösung. Bitte stellen Sie spezifischere und kürzere Fragen, damit diese beantwortet werden können. Ich empfehle Ihnen, diese Frage auf eine Funktion zu vereinfachen, die Sie möchten. Wenn Sie mehr wollen, stellen Sie eine neue Frage.
hhh
3
@hhh, eine Sache ist das Extrahieren von Text aus einer Binärdatei (z. B. einer PDF-Datei), damit er verwendet und gelesen werden kann, indem das Binärformat analysiert wird. es ist nichts optisches daran. der text ist schon da, diese dienstprogramme extrahieren ihn einfach so, dass es sozusagen augenschonend ist. Die optische Zeichenerkennung unterscheidet sich dahingehend, dass sie versucht, Pixelmuster in einer Bitmap zu erkennen und sie so zu verstehen, dass sie ein entsprechendes Textfragment erzeugen kann.
Magma
Dies beantwortet nicht die ursprüngliche Frage. AFAICT, pdfbox-app macht kein OCR.
Feuermurmel
5

Ich würde DEVONThink Pro Office empfehlen . Es ist eine ausgezeichnete Anwendung und hat eine sehr gute AppleScript-Unterstützung. Leider verfügt nur die 'Pro Office'-Version über die OCR-Funktion - Sie müssen also £ 100 ($ 150) bezahlen.

Es wäre übertrieben, wenn Sie es nur für skriptgesteuerte Texterkennung verwenden würden - aber es ist eine sehr gute App.

[edit] - ah, lies einfach deinen Beitrag noch einmal durch - es wäre definitiv übertrieben!

Wenn Sie nur OCR von der Shell möchten, können Sie versuchen, mit ABBY zu sprechen, dessen Engine DEVON lizenziert:

http://www.abbyy-developers.com/de:tech:samples:commandline_ocr

Diggory
quelle
Obwohl das DEVONThink Pro Office in OS X ein Overkill ist, ist es interessant. Wenn die Entwickler es über OS X und iOS entwickelt haben, funktioniert es möglicherweise (um die Benutzeroberfläche einfacher zu gestalten). Wissen Sie so etwas? Tolle Idee - fügt die Pro-Version die OCR-Ebene automatisch allen möglichen Dingen wie Screenshots und PDFs hinzu? Und Benutzer kann es irgendwie "skripten"?
hhh
2
Ja, die App verfügt über ein gutes AppleScript-Wörterbuch, mit dem Sie unter anderem in der App gespeicherte Bilder in durchsuchbare PDF-Dateien konvertieren können.
Diggory
Angenommen, ich mache Bilder mit dem iPhone oder Screenshots mit OS X und lege sie in einem Ordner ab. ProjectA: Fügt DEVONThink die OCR-Ebene automatisch hinzu, auch ohne die Sprache anzugeben? Angenommen, Sie legen sie in eine DropBox und lassen DEVONThink in OSX den Ordner automatisch überprüfen. Könnten Sie dann über OS X und iOS damit arbeiten? Es ist ein faszinierendes Konzept , wenn gut gemacht ... +1
hhh
In gewisser Weise klingt es wie EverNote, bei dem EverNote die Texterkennung hinzufügt, den Export jedoch nicht zulässt. Ist es möglich, Ihre Projekte mit der OCR aus dieser Software zu exportieren? Wenn nicht, funktionieren möglicherweise eine sehr einfache OCR-Bibliothek und eine Sprachanalyse-Bibliothek am besten. Vielleicht ist der andere ABBY, ich weiß es noch nicht.
hhh
2
Es kann in mehreren Sprachen erkennen: i.stack.imgur.com/buDLI.png
Diggory
5

Sie können Ihre vorhandene PDF-Datei durchsuchbar machen, indem Sie sie in eine Textdatei konvertieren. Sie benötigen dafür mindestens Imagemagick , Ghostscript (für PDF-Konvertierung) und Tesseract OCR-Tool.

Einige Befehlszeilenbeispiele:

$ wget http://www.fmwconcepts.com/misc_tests/pdf_tests/test.pdf
$ convert -density 300 -depth 8 test.pdf test.png
$ tesseract test*.png test.txt
$ grep -i --color=auto the test*.txt
**The** details as told by surviving crew members, to **the** German publication Spiegel and published on ABC's

Dies kann weiter auf Ihre Bedürfnisse erweitert werden.

Um die erforderlichen Tools zu installieren, können Sie sie unter OSX über Homebrew installieren :

brew install imagemagick jpeg libpng ghostscript tesseract

Verwenden Sie unter Linux apt-getoder yumanstelle von brew.

Weitere OCR-Tools finden Sie unter: OCR auf Linux-Systemen

Verbunden:

Kenorb
quelle
4

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
Es sieht nach einer coolen Lösung aus, obwohl ich das OCR-Backend Tesseract als ziemlich enttäuschend empfunden habe (sicherlich aufgrund meiner eigenen Einschränkungen bei der korrekten Konfiguration).
Magma
Ich liebe OCRmyPDF, siehe meine Antwort unten, die erklärt, wie man es schnell und schmerzlos mit Docker installiert und per Drag & Drop automatisiert.
Donnerstag,
1

Stackoverflow hat unter PDF-Parsing verwandte Fragen, die sich mit Dingen wie PDFBox und Apaches TIKA befassen, die die PDFBox verwendet. Der Ruby-Code unten extrahiert das Schreiben aus PDF. Sie müssen über eine ausreichende Auflösung verfügen, damit diese Art von Codes zuverlässig funktioniert. Holen Sie sich also einen ausreichend guten Scanner mit hoher Auflösung und prüfen Sie, ob einige der Programme funktionieren.

Beispiele

  1. https://github.com/yob/pdf-reader/tree/master/examples

SO Fäden

  1. /programming/5217783/pdf-parse-to-text-in-java

  2. /programming/8149179/alternative-to-tika-pdfbox-for-parsing-pdf-in-solr-any-version-lateran-1-4

  3. /programming/320621/ruby-pdf-parsing-gem-library

  4. /programming/15186740/haskell-parsing-reading-content-of-pdf-files

[Bearbeiten]

Ich bin mir nicht sicher, ob ich Ihr Problem jetzt verstanden habe. Sie möchten verschiedene Arten von Material wie zufällige Fotos, Screenshots, PDFs ohne OCR-Ebene und so weiter OCR-Ebene hinzufügen? Ich kenne die Lösung nicht, aber ich bin mir sicher, dass jemand eine spezielle Frage zu Automator und einer OCR-Software gestellt hat:

Automator-Skript mit einer OCR-Software zum automatischen Hinzufügen von OCR zum Material?

hhh
quelle
Nochmals: Ich möchte keinen Text analysieren oder extrahieren, der bereits vorhanden ist. Ich möchte Text (OCR) in PDF-Dateien erkennen, bei denen es sich im Wesentlichen um Bilder und Bitmaps handelt. Sie enthalten ursprünglich keinen Text.
Magma
@magma bitte, siehe mein Update. Sie möchten das Hinzufügen von OCR-Ebenen automatisieren, damit Sie auch ohne "durchsuchbaren Text" über verschiedene Arten von Dokumenten suchen können? Wenn Sie dies tun könnten, könnten Sie alle Dokumente im Finder durchsuchen - verstehen Sie? Ich bin überrascht, wenn Apple dies bei kommenden Upgrades nicht tut ...
hhh
wie in meiner frage angegeben ja.
Magma
1

Für diese Art der selbstgesteuerten Anwendung bin ich ein großer Fan von Hazel.

Es macht es extrem einfach, Aktionen zu skripten, ohne dass Sie ein stärker auf die Befehlszeile ausgerichtetes Tool wie Perl oder Python erlernen müssen. In Verbindung mit der OCR-Engine Ihrer Wahl (meine ist derzeit PDF Pen Pro) sollten Sie keine Probleme haben, Ihre Dateien mit minimalem Aufwand zu verarbeiten Aufregung.

Beide sind kostenpflichtige Software, aber die Nützlichkeit beider geht weit über diesen einen Fall hinaus. In meiner Situation überwiegt der Preis für die Digitalisierung meiner gescannten Aufzeichnungen (und des laufenden Papiers) bei weitem die Zeit, die ich für die Programmierung an anderer Stelle aufgewendet hätte, und jetzt, da ich beide Tools besitze, kann ich viele andere Aufgaben erledigen Sie.

bmike
quelle
0

Ich verwende Adobe Acrobat zum OCR im Batch. Mein Duplex-Scanner kann OCR nach dem Scannen ausführen, aber die OCR-Technologie in Acrobat ist meiner Meinung nach genauer. Ich zeige nur auf den Ordner, der keine OCR hat. Acrobat speichert dann die PDF-Datei als durchsuchbare PDF-Datei, die jetzt eine Textebene enthält. Wenn ich über die Befehlszeile OCR ausführen wollte, kenne ich keinen Weg, aber ich kann das GUI-Ende mithilfe von Autohotkey automatisieren. Nicht so zuverlässig und nicht so schnell wie die Befehlszeile, erledigt aber die Aufgabe, nachdem Sie eine Workflow-Aktion eingerichtet haben, um die GUI-Interaktion zu minimieren.

Für Macs funktioniert Apple Script wie Autohotkey auf dem PC, obwohl ich es auf meinem Mac noch nicht ausprobiert habe.

Der Auto-Hot-Key ist mit einem Recorder ausgestattet, sodass der Großteil des Drehbuchschreibens ein Abendessen für Sie darstellt.

Ich habe mit OCR-Bildern experimentiert, den Vorgang jedoch noch nicht vollständig mit Acrobat automatisiert. Die Befehlszeile ist ideal, aber ich habe noch keine hochwertige OCR-Engine gefunden, die Acrobat übersteigt. Deshalb halte ich mich vorerst an Acrobat.

Sonne
quelle
0

Ich bin kürzlich darauf gestoßen: http://ocrkit.com/faq.html

Sie müssen jedoch nach 14 Tagen bezahlen

Charlton
quelle
1
Willkommen bei Ask Different! Wir versuchen, die besten Antworten zu finden. Diese Antworten geben Auskunft darüber, warum sie die besten sind. Erklären Sie, warum Sie der Meinung sind, dass die von Ihnen empfohlene Software besser ist als andere. In der Regel können Antworten nur über Links gelöscht werden. Sie möchten Ihre Antwort daher immer mit allen relevanten Informationen versehen. Sehen Sie wie man Antwort auf , wie man eine Qualität Antwort zu geben.
26.
0

Ich habe eine hochwertige Drag & Drop-Konvertierung mit Docker erhalten.

Wenn du:

  1. Installieren Sie Docker für Ihren Mac und
  2. dann erstelle eine neue Automator App
  3. mit diesen Inhalten in einer Aktion "Ausführen eines Shell-Skripts". Wähle Pass Input:"as arguments"

/bin/bash Skripttext:

cd "`dirname "$1"`"
/usr/local/bin/docker run --rm -v "$(pwd):/home/docker" jbarlow83/OCRmyPDF --force-ocr "`basename "$1"`" "`basename -s .pdf "$1"`-ocr.pdf"

In diesem Fall sollten Sie PDF-Dateien per Drag-and-Drop ablegen können. Anschließend wird eine PDF-Datei mit dem Namen "-ocr" an den Dateinamen angehängt.

Ich stelle mir vor, es könnte leicht modifiziert werden, eine Datei an Automator zurückzugeben, um sie auch irgendwo zu kopieren. Weitere Details zum OCRmyPDF Docker-Paket. und Hauptwerkzeug (auch in einer anderen Antwort erwähnt).

Sie können es in Automator selbst mit der Aktion "Bestimmte Finder-Elemente abrufen" als Eingabe für diese Aktion testen.

Bei der ersten Ausführung wird mehr Zeit benötigt, da Docker-Images für OCRmyPDF (unsichtbar) heruntergeladen werden müssen. Im Terminal können Sie alternativ auch laufen docker pull jbarlow83/ocrmypdf, um den ersten Lauf zu beschleunigen. Ein typischer Durchlauf dauert etwa 10 Sekunden pro hochauflösender Seite, führt jedoch automatisch zu Ergebnissen, die von Text in Sprache umgewandelt werden können, selbst wenn Tabellen oder Diagramme vorhanden sind. Vor dem OCR-Vorgang beschneide ich mit Sejda, damit unsinnige Randwörter von anderen Seiten entfernt werden.

Das --force-ocrArgument weist das Tool an, alle früheren OCR-Versuche zu ignorieren und zu überschreiben, die in meinen Fällen normalerweise nur teilweise und unbrauchbar sind.

thadk
quelle
0

OCRKit unterstützt sowohl AppleScript als auch eine CLI. Von ihrer Hilfeseite :

AppleScript

Sie können OCRKit auch als Skript ausführen, um es in Ihren spezifischen Workflow zu integrieren. Verarbeiten Sie beispielsweise eingehende Dateien, über einen freigegebenen Ordner, vom MFP-Kopiergerät usw. und weisen Sie OCRKit einfach an, zu öffnen, und verarbeiten Sie sie dann über AppleScript:

tell application "OCRKit"
   -- the wonders of AppleScript POSIX path handling, ...
   open "Users:admin:Desktop:orderform.pdf"
   open POSIX path of "/Users/Admin/Desktop/orderform.pdf"
end tell 

Befehlszeile

Seit OCRKit Version 2.5 wird Direct Command Line Scripting unterstützt. Dies vereinfacht die Verwendung von OCRKit in der Stapelverarbeitung erheblich, ermöglicht das Festlegen von mehr Optionen und ist außerdem robuster und plattformübergreifender als AppleSCript.

OCRKit.app/Contents/MacOS/OCRKit \ 
    --lang en | de | fr | es | ... \
    --format pdf | html | rtf | text \
    --no-progress \
    --output out-file in-file

Seit OCRKit Version 16.9 werden zusätzliche Befehlszeilenoptionen unterstützt:

-r, --recursive directory

Verzeichnis rekursiv nach neuen Dateien durchsuchen. Überspringt Dateien aus OCRKit mit Textebene oder Vektorgrafiken.

--pattern "regex"

Muster, das zum Abgleichen von Dateinamen bei rekursiven Scans verwendet wird. Standardmäßig %.pdf$lautet die Empfehlung für TIFF%.tiff?$

--log file

Schreiben Sie während des rekursiven Scans in eine Datei Protokolldateiinformationen und Statistiken.

--password secret

Verwenden Sie ein geheimes Passwort, um PDF-Dateien während der Stapelverarbeitung zu entschlüsseln.

--test-run [ fast ]

Führen Sie die Teststapelverarbeitung nur im Testmodus aus, um PDF-Dateien zu testen oder die Seitenzahl zu ermitteln, um die Gesamtverarbeitungszeit zu schätzen. "fast" überprüft nur die erste Seite jeder Datei, anstatt alle Seiten für die Bild- und Vektoranalyse zu durchsuchen.

--tag name

Verwenden Sie den erweiterten Attributnamen, um den Verarbeitungsstatus von Dateien während der Stapelverarbeitung zu kennzeichnen. macos:OCRKit (%s)Verwenden Sie stattdessen native macOS Finder-Tags oder schließen Sie macos:OCRKitdas state-Attribut einfach nicht ein. Die Reihenfolge des Staates Attribut sind: started, analyzed, processed, und kann auch sein encrypted.

Xilopaint
quelle