Bibliotecas de Tesseract OCR
y wrappers.
Una referencia práctica y comparable de las bibliotecas y wrappers para cada lenguaje principal: qué instalar, un ejemplo mínimo y los compromisos entre bindings nativos y wrappers de CLI.
¿Qué biblioteca debo usar?
Elige la fila de tu lenguaje y lee la sección correspondiente.
| Lenguaje | Recomendada | Tipo | Notas |
|---|---|---|---|
| Python | pytesseract | Wrapper de CLI | Lo más simple; ver la guía de Python. Usa tesserocr para velocidad en proceso. |
| JavaScript / TypeScript | tesseract.js | WASM | Funciona en navegador y Node; sin soporte de PDF. |
| C++ | TessBaseAPI | Nativo | La API central; máximo control. |
| Java | Tess4J | Binding JNA | Necesita las bibliotecas nativas en el classpath. |
| Go | gosseract | Binding cgo | Requiere libtesseract-dev. |
| C# / .NET | Tesseract (.NET) | Wrapper nativo | Paquete NuGet; incluye binarios nativos. |
| Rust | leptess | Binding nativo | Enlaza con Leptonica + Tesseract. |
| PHP | thiagoalessio/tesseract_ocr | Wrapper de CLI | Paquete de Composer. |
Python
El ecosistema más amplio: un wrapper de CLI y varios bindings nativos.
pytesseract— el wrapper de CLI estándar. Fácil, pero lanza un proceso por llamada.tesserocr— binding nativo a la API de C++; más rápido en proceso, requierelibtesseract-dev.pyocr— wrapper compatible con varios motores.aiopytesseract— wrapper asíncrono para cargas concurrentes.
pip install pytesseract pillow
import pytesseract
from PIL import Image
print(pytesseract.image_to_string(Image.open("image.png")))Guía completa: Tesseract OCR en Python (pytesseract).
JavaScript / TypeScript
tesseract.js lleva el motor al navegador y a Node mediante 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: tesseract.js no admite archivos PDF ni modifica el modelo de reconocimiento. Para usar solo en Node, node-tesseract-ocr envuelve la CLI instalada.
C++
La API nativa TessBaseAPI es la integración de referencia y lo que envuelven la mayoría de bindings.
#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 contra libtesseract-dev y libleptonica-dev (ver instalación).
Java
Tess4J es el wrapper JNA maduro; los presets de JavaCPP son una 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 enlazar con la biblioteca 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()Requiere libtesseract-dev y libleptonica-dev (Linux) o los paquetes de Homebrew (macOS).
C# / .NET
El paquete NuGet Tesseract envuelve la biblioteca nativa e incluye los binarios.
// 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());Otros lenguajes
Existen bindings de la comunidad para casi todos los ecosistemas.
- Rust —
leptess(binding nativo),rusty-tesseract(wrapper de CLI). - PHP —
thiagoalessio/tesseract_ocr(Composer, wrapper de CLI). - Ruby —
rtesseract(wrapper de CLI). - C — la API C de Tesseract (
tesseract/capi.h).
Wrapper de CLI vs binding nativo
La elección importa más que el lenguaje para el rendimiento.
| Factor | Wrapper de CLI | Binding nativo |
|---|---|---|
| Configuración | Fácil: solo instala el motor | Necesita cabeceras y bibliotecas de desarrollo |
| Velocidad por llamada | Más lento (proceso por llamada) | Más rápido (en proceso) |
| Control | Solo flags de CLI y configuración | API completa (iteradores, cajas, confianza) |
| Ejemplos | pytesseract, rtesseract, node-tesseract-ocr | tesserocr, Tess4J, gosseract, TessBaseAPI |
Para scripts puntuales, un wrapper de CLI suele ser lo más rápido. Para servicios de alto volumen o sensibles a la latencia, prefiere un binding nativo o agrupa mediante la CLI (ver las notas de rendimiento).
Preguntas frecuentes
¿Qué biblioteca de Tesseract debo usar?
Busca la fila de tu lenguaje en la tabla de arriba. Usa un binding nativo para velocidad y control, o un wrapper de CLI para simplicidad.
¿Necesito instalar el motor por separado?
Sí para la mayoría de wrappers: dependen del motor Tesseract instalado y de sus datos de idioma. Solo tesseract.js incluye una compilación WebAssembly del motor.
¿tesseract.js admite PDF?
No. Reconoce imágenes; convierte primero las páginas del PDF en imágenes o usa una biblioteca que añada soporte de PDF.
¿Cuál es el más rápido?
Los bindings nativos en proceso como tesserocr, Tess4J y gosseract evitan el arranque de proceso por llamada. Para wrappers de CLI, agrupa páginas y usa multiprocessing.
Siguientes pasos
Instala el motor y elige tu lenguaje.