Pular para o conteúdo principal
Guia para desenvolvedores

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.

LinguagemRecomendadaTipoNotas
PythonpytesseractWrapper de CLIO mais simples; ver o guia de Python. Use tesserocr para velocidade em processo.
JavaScript / TypeScripttesseract.jsWASMRoda no navegador e no Node; sem suporte a PDF.
C++TessBaseAPINativoA API central; controle máximo.
JavaTess4JBinding JNAPrecisa das bibliotecas nativas no classpath.
GogosseractBinding cgoRequer libtesseract-dev.
C# / .NETTesseract (.NET)Wrapper nativoPacote NuGet; inclui binários nativos.
RustleptessBinding nativoLiga-se a Leptonica + Tesseract.
PHPthiagoalessio/tesseract_ocrWrapper de CLIPacote Composer.

Python

O maior ecossistema: um wrapper de CLI e vários bindings nativos.

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

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

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

Compile contra libtesseract-dev e libleptonica-dev (ver instalação).

Java

Tess4J é o wrapper JNA maduro; os presets do JavaCPP são uma 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 para ligar-se à biblioteca C++ do 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()

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.

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

Outras linguagens

Existem bindings da comunidade para quase todos os ecossistemas.

Wrapper de CLI vs binding nativo

A escolha importa mais que a linguagem para o desempenho.

FatorWrapper de CLIBinding nativo
ConfiguraçãoFácil: basta instalar o motorExige cabeçalhos e bibliotecas de desenvolvimento
Velocidade por chamadaMais lento (processo por chamada)Mais rápido (em processo)
ControleApenas flags de CLI e configuraçãoAPI completa (iteradores, caixas, confiança)
Exemplospytesseract, rtesseract, node-tesseract-ocrtesserocr, 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.

Instale o motor e escolha sua linguagem.