Vai al contenuto principale
Guida per sviluppatori

Librerie Tesseract OCR
& wrapper.

Un riferimento pratico e confrontabile delle librerie e dei wrapper per ogni linguaggio principale: cosa installare, un esempio minimo e i compromessi tra binding nativi e wrapper di CLI.

Quale libreria dovrei usare?

Scegli la riga del tuo linguaggio e leggi la sezione corrispondente.

LinguaggioConsigliataTipoNote
PythonpytesseractWrapper di CLILa più semplice; vedi la guida Python. Usa tesserocr per la velocità in-process.
JavaScript / TypeScripttesseract.jsWASMFunziona nel browser e in Node; nessun supporto PDF.
C++TessBaseAPINativoL'API principale; massimo controllo.
JavaTess4JBinding JNARichiede le librerie native nel classpath.
GogosseractBinding cgoRichiede libtesseract-dev.
C# / .NETTesseract (.NET)Wrapper nativoPacchetto NuGet; include i binari nativi.
RustleptessBinding nativoSi collega a Leptonica + Tesseract.
PHPthiagoalessio/tesseract_ocrWrapper di CLIPacchetto Composer.

Python

L'ecosistema più ampio: un wrapper di CLI e diversi binding nativi.

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

Guida completa: Tesseract OCR in Python (pytesseract).

JavaScript / TypeScript

tesseract.js porta il motore nel browser e in Node tramite 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));

Nota: tesseract.js non supporta i PDF e non modifica il modello. Per il solo Node, node-tesseract-ocr avvolge la CLI installata.

C++

L'API nativa TessBaseAPI è l'integrazione di riferimento e ciò che la maggior parte dei binding avvolge.

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

Compila contro libtesseract-dev e libleptonica-dev (vedi installazione).

Java

Tess4J è il wrapper JNA maturo; i preset JavaCPP sono un'alternativa.

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 usa cgo per collegarsi alla libreria C++ di 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()

Richiede libtesseract-dev e libleptonica-dev (Linux) o i pacchetti Homebrew (macOS).

C# / .NET

Il pacchetto NuGet Tesseract avvolge la libreria nativa e include i binari.

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

Altri linguaggi

Esistono binding della community per quasi tutti gli ecosistemi.

Wrapper di CLI vs binding nativo

Per le prestazioni la scelta conta più del linguaggio.

FattoreWrapper di CLIBinding nativo
ConfigurazioneFacile: basta installare il motoreRichiede header e librerie di sviluppo
Velocità per chiamataPiù lento (processo per chiamata)Più veloce (in-process)
ControlloSolo flag CLI e configurazioneAPI completa (iteratori, riquadri, confidenza)
Esempipytesseract, rtesseract, node-tesseract-ocrtesserocr, Tess4J, gosseract, TessBaseAPI

Per script occasionali un wrapper di CLI è di solito la via più rapida. Per servizi ad alto volume o sensibili alla latenza, preferisci un binding nativo o raggruppa tramite la CLI (vedi le note sulle prestazioni).

FAQ librerie

Quale libreria Tesseract devo usare?

Individua la riga del tuo linguaggio nella tabella sopra. Usa un binding nativo per velocità e controllo, o un wrapper di CLI per semplicità.

Devo installare il motore separatamente?

Sì per la maggior parte dei wrapper: dipendono dal motore Tesseract installato e dai dati lingua. Solo tesseract.js include una compilazione WebAssembly del motore.

tesseract.js supporta i PDF?

No. Riconosce immagini; converti prima le pagine del PDF in immagini o usa una libreria che aggiunga il supporto PDF.

Qual è il più veloce?

I binding nativi in-process come tesserocr, Tess4J e gosseract evitano l'avvio di processo per chiamata. Per i wrapper di CLI, raggruppa le pagine e usa multiprocessing.

Installa il motore, poi scegli il tuo linguaggio.