TESS4J Tutorial mit Maven und Java

TESS4J Tutorial mit Maven und Java
In der heutigen Zeit, in denen die Daten ständig wachsen. Es ist erforderlich, alle diese Daten schneller zu analysieren, und oft auch entscheidend, auch entscheidend. Manchmal stehen wir vor einem Problem des Extrahierens von Daten aus PDF -Dateien. Das Extrahieren von Textdaten aus der PDF -Datei ist umständlich und auch eine große manuelle Aufgabe.

Wäre es nicht nur cool, wenn wir ein programmiertes Paket hätten, das einige PDF -Dateien akzeptieren und den enthaltenden Text zurückgeben könnte? Es stellt sich heraus, dass wir eine Bibliothek haben, um genau das zu tun. Tesseract ist ein Open -Source -Framework, das in C ++ geschrieben wurde, mit dem wir mit PNG -Bildern, JPG -Bildern und PDF -Dateien arbeiten und den Text zurückgeben können.

In dieser Lektion über Tesseract mit Java und Maven werden wir sehen, wie wir eine einfache Java -Anwendung entwickeln können, die eine PDF -Datei akzeptiert und den Text mit Tesseract OCR zurückgibt. Wir werden auch sehen, warum Tesseract so erfolgreich ist. Einer der Grund dafür, dass Tesseract ein so erfolgreiches Paket ist, ist, dass es von Google selbst unterstützt wird.

Um mit dieser Lektion zu arbeiten, ist es wichtig, die Tesseract -OCR -Engine auf Ihrem System zu installieren. Gehen Sie zum offiziellen Github -Repo, um den Installationsanweisungen zu befolgen. Direkt aus dem Github Repo wurde Tesseract ursprünglich bei Hewlett-Packard Laboratories Bristol und bei Hewlett-Packard Co, Greeley Colorado zwischen 1985 und 1994, entwickelt, wobei einige weitere Änderungen 1996 vorgenommen wurden, um auf Windows zu portieren, und einige C ++-Izing in 1998. 2005 wurde Tesseract von HP offen bezogen. Seit 2006 wird es von Google entwickelt.”

Abhängigkeit von Maven

Wir werden zunächst ein einfaches Java -Projekt erstellen, das auf Maven basiert und die folgende Maven -Abhängigkeit enthält:


Netz.SourceForge.tess4j
tess4j
4.3.0

Dies ist eine Maven -Abhängigkeit, die von einem Wrapper -Projekt bereitgestellt wird, das Sie hier verweisen können, um mehr Verständnis zu erlangen. Auf der Website wird TESS4J einfach als Java JNA -Wrapper für die Tesseract OCR -API beschrieben.

Projektstruktur

Wir haben ein sehr einfaches Projekt mit einer einzelnen Quellcodedatei. Die aktuelle Projektstruktur sieht ungefähr so ​​aus:

Wie bereits erwähnt, haben wir eine einzelne Quellcodedatei, die wir verwenden werden. Wir könnten eine PDF -Datei ein wenig später in den Ressourcenordner einfügen, um das Lesen einer PDF -Datei und das Extrahieren von Text daraus zu demonstrieren.

Tesseract -Objekt bauen

Sobald wir eine Beispiel -Quellcodeklasse haben, in der wir starten können (wie in der Projektstruktur im letzten Abschnitt gezeigt), können wir diesen Code hinzuzufügen. Ab sofort ist es eine leere Klasse:

Paket com.LinuxHint.Tess4J;
öffentliche Klasse Tess4Jdemo

Wie wir bereits über Tesseract gesprochen haben, kann Tesseract verwendet werden, um Text aus Dokumenten wie PDF -Dokumenten zu extrahieren. Dazu müssen wir die Tesseract -Bibliothek darüber trainieren, wie Dokumente strukturiert sind und welcher Text sie enthalten kann.

Abgesehen davon müssen Sie, wie Tesseract etwa 37 Sprachen unterstützt, Tesseract explizit darüber informieren, welche Sprache wir gerade lesen (wenn uns diese Informationen tatsächlich zur Verfügung stehen).

Wir werden eine einfache Java -Methode für Tesseract definieren:

private statische Tesseract Gettesseract ()

In dieser Methode können wir eine neue Instanz von Tesseract aus der Maven -Bibliothek erstellen, die wir zuvor hinzugefügt haben:

Tesseract Instance = new Tesseract ();

Nur um es klar zu machen, hier ist die Importaussage, die wir für die obige Instanziierung haben:

Netz importieren.SourceForge.tess4j.Tesseract;

Als Nächst. Dies ist sehr wichtig, da Tesseract ohne Pfad für Trainingsdaten sehr ungenaue Ergebnisse liefern kann. Glücklicherweise werden die Schulungsdaten für Tesseract mit der Installation geliefert, sodass Sie nur den richtigen Ort betrachten müssen. So setzen wir den Trainingsdatenweg fest:

Beispiel.setDatapath ("/usr/local/cellar/tesseract/4.0.0/share/tessdata ");
Beispiel.setglanguage ("eng");

Während wir einen Macintosh für dieses Tutorial verwenden, sieht unser Datenweg ungefähr dem oben genannten aus. Neben dem Trainingsdatenweg habe ich Tesseract auch die Informationen zur Verfügung gestellt, die wir verwenden werden Englisch Sprache.
Als nächstes werden wir Tesseract sagen, dass die Ausgabe, die wir benötigen HOCR Format. Grundsätzlich ist das HOCR -Format ein einfaches XML -basierter Format, das zwei Dinge enthält:

  1. Das Text -PDF -Dokument wird enthalten
  2. Die X- und Y -Koordinaten dieses Textes auf jeder Seite. Dies bedeutet, dass ein DF -Dokument genau auf die gleiche Weise von einer HOCR -Ausgabe zurückgezogen werden kann

Wir können das HOCR -Format als:

Beispiel.Sethokal (wahr);

Schließlich kann ich die Instanz zurückgeben, die wir oben gemacht haben. Hier ist der vollständige Quellcode der Methode, die wir gerade hier definiert haben:

private statische Tesseract Gettesseract ()
Tesseract Instance = new Tesseract ();
Beispiel.setDatapath ("/usr/local/cellar/tesseract/4.0.0/share/tessdata ");
Beispiel.setglanguage ("eng");
Beispiel.Sethokal (wahr);
Rückkehrinstanz;

Mit Tesseract

Sie mögen es vielleicht nicht glauben, aber ein Tesseract -Objekt einzurichten war so einfach. Wir können es jetzt mit einer einfachen Definition in einer Hauptfunktion verwenden:

public static void main (String [] args)
Tesseract Tesseract = gettSeract ();

Kannst du erraten, was jetzt noch übrig bleibt?? Das einzige, was wir jetzt tun müssen. Jetzt können wir einfach ein PDF -Dokument aufnehmen, um es zu lesen, aber das klingt ziemlich textuell. Warum versuchen wir nicht sofort ein Bild??

Für diese Lektion haben wir ein sehr einfaches Bild erstellt, das wir verwenden werden:

Sobald Sie dieses Bild (oder ein anderes Bild Ihrer Wahl) haben, können wir unsere Hauptmethode abschließen, damit wir endlich das ausgewählte Bild analysieren können:

public static void main (String [] args) löst TesserActException aus
Tesseract Tesseract = gettSeract ();
Datei Datei = neue Datei ("/user/shubham/desktop/tess4j.JPG ");
String -Ergebnis = Tesseract.Doocr (Datei);
System.aus.println (Ergebnis);

Wenn wir genau hinschauen, gibt es hier nichts magisch, was hier passiert ist. Das ist die Kraft dieser einfachen Wrapper für die Tesseract -Bibliothek, mit der wir zur Verfügung gestellt werden.

Jetzt sind wir bereit, das obige Programm auszuführen. Sie können es ausführen, um eine seltsame Ausgabe im XML -Format zu sehen. Wenn Sie Probleme haben, die Ausgabe zu verstehen, kommentieren Sie einfach die Eigenschaft, in der wir die HOCR -Ausgabe aktiviert haben. Sobald Sie das tun, sehen Sie eine einfache Ausgabe als:

Eine kurze Notiz, die es versuchen kann Vermeiden Sie PNG -Bilder und verwenden Sie JPEG -Bilder Stattdessen, wenn Sie überhaupt mit Bildern arbeiten. Dies liegt daran, dass Tesseract aufgrund seiner Komprimierungstechniken sehr schlecht im Lesen von PNG.

Einschränkungen des Tesseract OCR -Motors

Laut Tesseract Page -FAQ selbst ist „Tesseract eher ein OCR -Engine als ein voll ausgestattetes Programm ähnlich der kommerziellen OCR -Software wie Nuances Omnipage. Es sollte ursprünglich als Bestandteil anderer Programme oder Systeme dienen.

Obwohl Tesseract aus der Befehlszeile arbeitet, muss die Engine in andere Programme oder Schnittstellen wie Freeoc.Netz, Weokr oder Ocrpous. Ohne Integration in Programme wie diese hat Tesseract keine Seitenlayoutanalyse, keine Ausgabebildung und keine grafische Benutzeroberfläche (GUI). “

Wenn wir uns die obige Einschränkung ansehen, wurde die obige Einschränkung auch durch die TESS4J -Bibliothek gelöst, indem eine einfache, aber effektive Java -JNA -Wrapper über die C ++ - Bibliothek bereitgestellt wurde, die buchstäblich überall verwendet werden kann.

Abschluss

In dieser kurzen Lektion über Tesseract und Java haben wir ein sehr einfaches Beispiel für die Tesseract OCR -Engine erstellt, mit der wir Text aus verschiedenen Formatdateien wie PDF- und Bilddateien lesen können. Dies ist eine sehr wichtige Fähigkeit, um Text aus Dateien wie PDF und Bildern zu lesen, ist der erste Schritt, den Sie ausführen müssen, wenn Sie eine natürliche Sprachverarbeitung (NLP) -Techniken auf diese Datenformate anwenden möchten.

Die Tatsache, dass TESS4J verfügbar ist.