Zum Hauptinhalt springen
Entwickleranleitung

Tesseract OCR Bibliotheken
& Wrapper.

Eine praktische, vergleichbare Referenz zu den Bibliotheken und Wrappern für jede wichtige Sprache: was zu installieren ist, ein Minimalbeispiel und die Kompromisse zwischen nativen Bindings und CLI-Wrappern.

Welche Bibliothek soll ich verwenden?

Wählen Sie die Zeile für Ihre Sprache und lesen Sie den Abschnitt unten.

SpracheEmpfohlenTypHinweise
PythonpytesseractCLI-WrapperAm einfachsten; siehe Python-Anleitung. Nutzen Sie tesserocr für In-Process-Geschwindigkeit.
JavaScript / TypeScripttesseract.jsWASMLäuft im Browser und in Node; keine PDF-Unterstützung.
C++TessBaseAPINativDie Kern-API; maximale Kontrolle.
JavaTess4JJNA-BindingBenötigt die nativen Bibliotheken im Classpath.
Gogosseractcgo-BindingErfordert libtesseract-dev.
C# / .NETTesseract (.NET)Nativer WrapperNuGet-Paket; enthält native Binaries.
RustleptessNatives BindingBindet Leptonica + Tesseract ein.
PHPthiagoalessio/tesseract_ocrCLI-WrapperComposer-Paket.

Python

Das größte Ökosystem: ein CLI-Wrapper plus mehrere native Bindings.

python
pip install pytesseract pillow
import pytesseract
from PIL import Image
print(pytesseract.image_to_string(Image.open("image.png")))

Vollständige Anleitung: Tesseract OCR in Python (pytesseract).

JavaScript / TypeScript

tesseract.js bringt die Engine über WebAssembly in Browser und Node.

javascript
npm install tesseract.js
const Tesseract = require('tesseract.js');
Tesseract.recognize('image.png', 'eng', { logger: m => console.log(m) })
  .then(({ data: { text } }) => console.log(text));

Hinweis: tesseract.js unterstützt keine PDF-Dateien und ändert das Erkennungsmodell nicht. Für die reine Node-Nutzung umhüllt node-tesseract-ocr die installierte CLI.

C++

Die native TessBaseAPI ist die Referenzintegration und das, was die meisten Bindings umhüllen.

ocr.cpp
#include <tesseract/baseapi.h>
#include <leptonica/allheaders.h>

tesseract::TessBaseAPI* api = new tesseract::TessBaseAPI();
api->Init(NULL, "eng");
Pix* image = pixRead("image.png");
api->SetImage(image);
char* text = api->GetUTF8Text();
printf("%s", text);
api->End(); pixDestroy(&image);

Kompilieren Sie gegen libtesseract-dev und libleptonica-dev (siehe Installation).

Java

Tess4J ist der ausgereifte JNA-Wrapper; die JavaCPP-Presets sind eine Alternative.

Ocr.java
// Maven: net.sourceforge.tess4j:tess4j
import net.sourceforge.tess4j.Tesseract;
Tesseract t = new Tesseract();
t.setDatapath("tessdata");
String text = t.doOCR(new java.io.File("image.png"));

Go

gosseract nutzt cgo, um die Tesseract-C++-Bibliothek einzubinden.

main.go
go get github.com/otiai10/gosseract/v2
import "github.com/otiai10/gosseract/v2"
client := gosseract.NewClient()
defer client.Close()
client.SetImage("image.png")
text, _ := client.Text()

Erfordert libtesseract-dev und libleptonica-dev (Linux) oder die Homebrew-Pakete (macOS).

C# / .NET

Das NuGet-Paket Tesseract umhüllt die native Bibliothek und enthält die Binaries.

Program.cs
// dotnet add package Tesseract
using Tesseract;
using var engine = new TesseractEngine(@"./tessdata", "eng", EngineMode.Default);
using var img = Pix.LoadFromFile("image.png");
using var page = engine.Process(img);
Console.WriteLine(page.GetText());

Weitere Sprachen

Für fast jedes Ökosystem existieren Community-Bindings.

CLI-Wrapper vs natives Binding

Für die Leistung ist die Wahl wichtiger als die Sprache.

FaktorCLI-WrapperNatives Binding
EinrichtungEinfach — nur die Engine installierenBenötigt Dev-Header/-Bibliotheken
Geschwindigkeit pro AufrufLangsamer (Prozess pro Aufruf)Schneller (im Prozess)
KontrolleNur CLI-Flags und KonfigurationVollständige API (Iteratoren, Boxen, Konfidenz)
Beispielepytesseract, rtesseract, node-tesseract-ocrtesserocr, Tess4J, gosseract, TessBaseAPI

Für einmalige Skripte ist ein CLI-Wrapper meist am schnellsten. Für hochvolumige oder latenzkritische Dienste bevorzugen Sie ein natives Binding oder bündeln über die CLI (siehe Performance-Hinweise).

Häufige Fragen

Welche Tesseract-Bibliothek soll ich verwenden?

Suchen Sie die Zeile Ihrer Sprache in der Tabelle oben. Nutzen Sie ein natives Binding für Geschwindigkeit und Kontrolle oder einen CLI-Wrapper für Einfachheit.

Muss ich die Engine separat installieren?

Ja für die meisten Wrapper — sie setzen die installierte Tesseract-Engine und die Sprachdaten voraus. Nur tesseract.js enthält einen WebAssembly-Build der Engine.

Unterstützt tesseract.js PDFs?

Nein. Es erkennt Bilder; wandeln Sie PDF-Seiten zuerst in Bilder um oder nutzen Sie eine Bibliothek mit PDF-Unterstützung.

Welches ist am schnellsten?

Native In-Process-Bindings wie tesserocr, Tess4J und gosseract vermeiden den Prozessstart pro Aufruf. Bündeln Sie bei CLI-Wrappern Seiten und nutzen Sie multiprocessing.

Installieren Sie die Engine und wählen Sie Ihre Sprache.