Aller au contenu principal
Guide développeur

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.

LangageRecommandéeTypeRemarques
PythonpytesseractWrapper de CLILe plus simple ; voir le guide Python. Utilisez tesserocr pour la vitesse en processus.
JavaScript / TypeScripttesseract.jsWASMFonctionne dans le navigateur et Node ; pas de support PDF.
C++TessBaseAPINatifL'API centrale ; contrôle maximal.
JavaTess4JBinding JNANécessite les bibliothèques natives dans le classpath.
GogosseractBinding cgoRequiert libtesseract-dev.
C# / .NETTesseract (.NET)Wrapper natifPaquet NuGet ; inclut les binaires natifs.
RustleptessBinding natifSe lie à Leptonica + Tesseract.
PHPthiagoalessio/tesseract_ocrWrapper de CLIPaquet Composer.

Python

Le plus grand écosystème : un wrapper de CLI et plusieurs bindings natifs.

python
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.

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));

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.

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);

Compilez contre libtesseract-dev et libleptonica-dev (voir installation).

Java

Tess4J est le wrapper JNA mature ; les presets JavaCPP sont une 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 utilise cgo pour se lier à la bibliothèque C++ de Tesseract.

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()

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.

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());

Autres langages

Des bindings communautaires existent pour presque tous les écosystèmes.

Wrapper de CLI vs binding natif

Pour la performance, le choix compte plus que le langage.

FacteurWrapper de CLIBinding natif
ConfigurationSimple : il suffit d'installer le moteurNécessite les en-têtes et bibliothèques de développement
Vitesse par appelPlus lent (processus par appel)Plus rapide (en processus)
ContrôleUniquement les flags CLI et la configurationAPI complète (itérateurs, boîtes, confiance)
Exemplespytesseract, rtesseract, node-tesseract-ocrtesserocr, 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.

Installez le moteur, puis choisissez votre langage.