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.
| Sprache | Empfohlen | Typ | Hinweise |
|---|---|---|---|
| Python | pytesseract | CLI-Wrapper | Am einfachsten; siehe Python-Anleitung. Nutzen Sie tesserocr für In-Process-Geschwindigkeit. |
| JavaScript / TypeScript | tesseract.js | WASM | Läuft im Browser und in Node; keine PDF-Unterstützung. |
| C++ | TessBaseAPI | Nativ | Die Kern-API; maximale Kontrolle. |
| Java | Tess4J | JNA-Binding | Benötigt die nativen Bibliotheken im Classpath. |
| Go | gosseract | cgo-Binding | Erfordert libtesseract-dev. |
| C# / .NET | Tesseract (.NET) | Nativer Wrapper | NuGet-Paket; enthält native Binaries. |
| Rust | leptess | Natives Binding | Bindet Leptonica + Tesseract ein. |
| PHP | thiagoalessio/tesseract_ocr | CLI-Wrapper | Composer-Paket. |
Python
Das größte Ökosystem: ein CLI-Wrapper plus mehrere native Bindings.
pytesseract— der Standard-CLI-Wrapper. Einfach, startet aber pro Aufruf einen Prozess.tesserocr— natives Binding an die C++-API; schneller im Prozess, erfordertlibtesseract-dev.pyocr— Wrapper, der mehrere Engines unterstützt.aiopytesseract— asynchroner Wrapper für nebenläufige Lasten.
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.
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.
#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.
// 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.
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.
// 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.
- Rust —
leptess(natives Binding),rusty-tesseract(CLI-Wrapper). - PHP —
thiagoalessio/tesseract_ocr(Composer, CLI-Wrapper). - Ruby —
rtesseract(CLI-Wrapper). - C — die Tesseract-C-API (
tesseract/capi.h).
CLI-Wrapper vs natives Binding
Für die Leistung ist die Wahl wichtiger als die Sprache.
| Faktor | CLI-Wrapper | Natives Binding |
|---|---|---|
| Einrichtung | Einfach — nur die Engine installieren | Benötigt Dev-Header/-Bibliotheken |
| Geschwindigkeit pro Aufruf | Langsamer (Prozess pro Aufruf) | Schneller (im Prozess) |
| Kontrolle | Nur CLI-Flags und Konfiguration | Vollständige API (Iteratoren, Boxen, Konfidenz) |
| Beispiele | pytesseract, rtesseract, node-tesseract-ocr | tesserocr, 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.
Nächste Schritte
Installieren Sie die Engine und wählen Sie Ihre Sprache.