Bibliotecas do Tesseract OCR
e wrappers.
Uma referência prática e comparável das bibliotecas e wrappers para cada linguagem principal: o que instalar, um exemplo mínimo e os trade-offs entre bindings nativos e wrappers de CLI.
Qual biblioteca devo usar?
Escolha a linha da sua linguagem e leia a seção correspondente.
| Linguagem | Recomendada | Tipo | Notas |
|---|---|---|---|
| Python | pytesseract | Wrapper de CLI | O mais simples; ver o guia de Python. Use tesserocr para velocidade em processo. |
| JavaScript / TypeScript | tesseract.js | WASM | Roda no navegador e no Node; sem suporte a PDF. |
| C++ | TessBaseAPI | Nativo | A API central; controle máximo. |
| Java | Tess4J | Binding JNA | Precisa das bibliotecas nativas no classpath. |
| Go | gosseract | Binding cgo | Requer libtesseract-dev. |
| C# / .NET | Tesseract (.NET) | Wrapper nativo | Pacote NuGet; inclui binários nativos. |
| Rust | leptess | Binding nativo | Liga-se a Leptonica + Tesseract. |
| PHP | thiagoalessio/tesseract_ocr | Wrapper de CLI | Pacote Composer. |
Python
O maior ecossistema: um wrapper de CLI e vários bindings nativos.
pytesseract— o wrapper de CLI padrão. Fácil, mas inicia um processo por chamada.tesserocr— binding nativo à API de C++; mais rápido em processo, requerlibtesseract-dev.pyocr— wrapper compatível com vários motores.aiopytesseract— wrapper assíncrono para cargas concorrentes.
pip install pytesseract pillow
import pytesseract
from PIL import Image
print(pytesseract.image_to_string(Image.open("image.png")))Guia completo: Tesseract OCR em Python (pytesseract).
JavaScript / TypeScript
tesseract.js leva o motor ao navegador e ao Node por meio de 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));Nota: o tesseract.js não suporta arquivos PDF nem modifica o modelo de reconhecimento. Para uso apenas no Node, o node-tesseract-ocr envolve a CLI instalada.
C++
A API nativa TessBaseAPI é a integração de referência e o que a maioria dos bindings envolve.
#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);Compile contra libtesseract-dev e libleptonica-dev (ver instalação).
Java
Tess4J é o wrapper JNA maduro; os presets do JavaCPP são uma alternativa.
// 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 para ligar-se à biblioteca C++ do 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()Requer libtesseract-dev e libleptonica-dev (Linux) ou os pacotes do Homebrew (macOS).
C# / .NET
O pacote NuGet Tesseract envolve a biblioteca nativa e inclui os binários.
// 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());Outras linguagens
Existem bindings da comunidade para quase todos os ecossistemas.
- Rust —
leptess(binding nativo),rusty-tesseract(wrapper de CLI). - PHP —
thiagoalessio/tesseract_ocr(Composer, wrapper de CLI). - Ruby —
rtesseract(wrapper de CLI). - C — a API C do Tesseract (
tesseract/capi.h).
Wrapper de CLI vs binding nativo
A escolha importa mais que a linguagem para o desempenho.
| Fator | Wrapper de CLI | Binding nativo |
|---|---|---|
| Configuração | Fácil: basta instalar o motor | Exige cabeçalhos e bibliotecas de desenvolvimento |
| Velocidade por chamada | Mais lento (processo por chamada) | Mais rápido (em processo) |
| Controle | Apenas flags de CLI e configuração | API completa (iteradores, caixas, confiança) |
| Exemplos | pytesseract, rtesseract, node-tesseract-ocr | tesserocr, Tess4J, gosseract, TessBaseAPI |
Para scripts pontuais, um wrapper de CLI costuma ser o caminho mais rápido. Para serviços de alto volume ou sensíveis à latência, prefira um binding nativo ou agrupe pela CLI (ver as notas de desempenho).
Perguntas frequentes
Qual biblioteca do Tesseract devo usar?
Procure a linha da sua linguagem na tabela acima. Use um binding nativo para velocidade e controle, ou um wrapper de CLI pela simplicidade.
Preciso instalar o motor separadamente?
Sim para a maioria dos wrappers: eles dependem do motor Tesseract instalado e dos dados de idioma. Apenas o tesseract.js inclui uma compilação WebAssembly do motor.
O tesseract.js suporta PDF?
Não. Ele reconhece imagens; converta primeiro as páginas do PDF em imagens ou use uma biblioteca que adicione suporte a PDF.
Qual é o mais rápido?
Bindings nativos em processo como tesserocr, Tess4J e gosseract evitam a inicialização de processo por chamada. Para wrappers de CLI, agrupe páginas e use multiprocessing.
Próximos passos
Instale o motor e escolha sua linguagem.