Bibliothèques Tesseract OCR
& wrappers.
Une référence pratique et comparable des bibliothèques et wrappers pour chaque langage principal : quoi installer, un exemple minimal et les compromis entre bindings natifs et wrappers de CLI.
Quelle bibliothèque choisir ?
Choisissez la ligne de votre langage, puis lisez la section ci-dessous.
| Langage | Recommandée | Type | Remarques |
|---|---|---|---|
| Python | pytesseract | Wrapper de CLI | Le plus simple ; voir le guide Python. Utilisez tesserocr pour la vitesse en processus. |
| JavaScript / TypeScript | tesseract.js | WASM | Fonctionne dans le navigateur et Node ; pas de support PDF. |
| C++ | TessBaseAPI | Natif | L'API centrale ; contrôle maximal. |
| Java | Tess4J | Binding JNA | Nécessite les bibliothèques natives dans le classpath. |
| Go | gosseract | Binding cgo | Requiert libtesseract-dev. |
| C# / .NET | Tesseract (.NET) | Wrapper natif | Paquet NuGet ; inclut les binaires natifs. |
| Rust | leptess | Binding natif | Se lie à Leptonica + Tesseract. |
| PHP | thiagoalessio/tesseract_ocr | Wrapper de CLI | Paquet Composer. |
Python
Le plus grand écosystème : un wrapper de CLI et plusieurs bindings natifs.
pytesseract— le wrapper de CLI standard. Simple, mais lance un processus par appel.tesserocr— binding natif à l'API C++ ; plus rapide en processus, requiertlibtesseract-dev.pyocr— wrapper compatible avec plusieurs moteurs.aiopytesseract— wrapper asynchrone pour les charges concurrentes.
pip install pytesseract pillow
import pytesseract
from PIL import Image
print(pytesseract.image_to_string(Image.open("image.png")))Guide complet : Tesseract OCR en Python (pytesseract).
JavaScript / TypeScript
tesseract.js apporte le moteur au navigateur et à Node via WebAssembly.
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));Remarque : tesseract.js ne prend pas en charge les PDF et ne modifie pas le modèle. Pour un usage Node uniquement, node-tesseract-ocr enveloppe la CLI installée.
C++
L'API native TessBaseAPI est l'intégration de référence et ce que la plupart des bindings enveloppent.
#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);Compilez contre libtesseract-dev et libleptonica-dev (voir installation).
Java
Tess4J est le wrapper JNA mature ; les presets JavaCPP sont une 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 utilise cgo pour se lier à la bibliothèque C++ de Tesseract.
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()Requiert libtesseract-dev et libleptonica-dev (Linux) ou les paquets Homebrew (macOS).
C# / .NET
Le paquet NuGet Tesseract enveloppe la bibliothèque native et inclut les binaires.
// 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());Autres langages
Des bindings communautaires existent pour presque tous les écosystèmes.
- Rust —
leptess(binding natif),rusty-tesseract(wrapper de CLI). - PHP —
thiagoalessio/tesseract_ocr(Composer, wrapper de CLI). - Ruby —
rtesseract(wrapper de CLI). - C — l'API C de Tesseract (
tesseract/capi.h).
Wrapper de CLI vs binding natif
Pour la performance, le choix compte plus que le langage.
| Facteur | Wrapper de CLI | Binding natif |
|---|---|---|
| Configuration | Simple : il suffit d'installer le moteur | Nécessite les en-têtes et bibliothèques de développement |
| Vitesse par appel | Plus lent (processus par appel) | Plus rapide (en processus) |
| Contrôle | Uniquement les flags CLI et la configuration | API complète (itérateurs, boîtes, confiance) |
| Exemples | pytesseract, rtesseract, node-tesseract-ocr | tesserocr, Tess4J, gosseract, TessBaseAPI |
Pour des scripts ponctuels, un wrapper de CLI est souvent le plus rapide. Pour des services à fort volume ou sensibles à la latence, préférez un binding natif ou regroupez via la CLI (voir les notes de performance).
FAQ bibliothèques
Quelle bibliothèque Tesseract choisir ?
Repérez la ligne de votre langage dans le tableau ci-dessus. Utilisez un binding natif pour la vitesse et le contrôle, ou un wrapper de CLI pour la simplicité.
Dois-je installer le moteur séparément ?
Oui pour la plupart des wrappers : ils dépendent du moteur Tesseract installé et des données de langue. Seul tesseract.js embarque une compilation WebAssembly du moteur.
tesseract.js prend-il en charge les PDF ?
Non. Il reconnaît des images ; convertissez d'abord les pages PDF en images ou utilisez une bibliothèque qui ajoute le support PDF.
Quel est le plus rapide ?
Les bindings natifs en processus comme tesserocr, Tess4J et gosseract évitent le démarrage de processus par appel. Pour les wrappers de CLI, regroupez les pages et utilisez multiprocessing.
Étapes suivantes
Installez le moteur, puis choisissez votre langage.