Tesseract OCR: leer un documento escaneado en local (guía francés)
Tesseract es el motor libre de referencia para OCR (Apache 2.0, más de 70.000 estrellas en GitHub, versión 5.5.3 en 2026): gratuito, sin conexión, disponible en cualquier lugar, y su precisión depende mucho más de la calidad de la imagen —resolución, corrección de la inclinación, contraste— que de sus propios ajustes. Con texto limpio sigue siendo rápido y fiable; con una maquetación compleja o un documento ligeramente inclinado, su precisión puede desplomarse de golpe.
Un PDF escaneado no contiene texto: es una imagen de texto. Mientras no se haya sometido a reconocimiento óptico, se indexa sin contenido y el asistente documental asegura que el documento no dice nada. Tesseract es el motor de software libre de referencia para este paso: gratuito, sin conexión, disponible en todas partes y mucho más dependiente de la calidad de la imagen que de sus propios ajustes.
#Qué es Tesseract y qué no es
Tesseract es un motor de reconocimiento óptico de caracteres publicado bajo licencia Apache 2.0. El repositorio oficial, descrito por sus mantenedores como el «Tesseract Open Source OCR Engine», supera actualmente las 70.000 estrellas en GitHub. La versión 4 le añadió un motor basado en redes neuronales LSTM, centrado en el reconocimiento de líneas; el motor histórico, que reconoce patrones de caracteres, sigue disponible como opción. Lee formatos de imagen comunes (PNG, JPEG, TIFF) y produce texto sin formato, hOCR, PDF o TSV. La última versión estable hasta la fecha, la 5.5.3, salió el 24 de julio de 2026. En la práctica: instala el archivo de idioma, cuida la imagen (300 puntos por pulgada, página bien alineada, contraste nítido), elige el modo adecuado de segmentación y luego verifica el resultado en unas veinte páginas antes de procesar un lote.
Lo que no es: una herramienta de comprensión de documentos. Genera texto, posiblemente con posiciones. No dice que un bloque sea un título, no reconstruye una tabla en filas y columnas, y no entiende lo que lee. Para un documento estructurado, el OCR es solo una pieza entre otras.
#El francés: el archivo de idioma
Tu ChatGPT privado y gratuito en tu máquina en 1 hora — LM Studio, Ollama, Open WebUI, tus documentos, sin nube.
- Espacio en línea de por vida
- PDF + archivos
- Reembolsado 30 j
Por defecto, Tesseract lee inglés. En un documento francés, eso se traduce en acentos perdidos y palabras aproximadas, y muchas personas concluyen que el motor es deficiente. La documentación especifica que sin la opción -l se asume el inglés. Por tanto, hay que instalar el archivo de datos del idioma y especificar ese idioma explícitamente al ejecutar el programa. El proyecto afirma que reconoce más de cien idiomas una vez instalados los paquetes adecuados.
#La calidad de la imagen lo es todo
Este es el punto que se descubre demasiado tarde: la documentación oficial dedica su página «Improve quality» al procesamiento de la imagen antes de abordar los ajustes del motor. Tesseract ya realiza operaciones internas (biblioteca Leptonica), pero no siempre bastan, y un preprocesamiento de unas pocas líneas suele bastar para hacer legible un escaneo mediocre. Koncile, una empresa de software de extracción de facturas, ilustra la magnitud del fenómeno en sus propias pruebas, publicadas en 2026: en una factura inclinada apenas entre tres y cinco grados, la tasa de lectura correcta pasa del 100 % al 31 %. No es un estudio independiente, pero el orden de magnitud coincide con la advertencia de la documentación oficial. Ningún ajuste del motor puede compensar una caída así; solo una corrección previa de la inclinación puede hacerlo.
- Resolución
- La documentación oficial indica que Tesseract funciona mejor con imágenes de al menos 300 puntos por pulgada, y sugiere redimensionar en caso contrario.
- Enderezado
- La documentación advierte que la calidad de la segmentación por líneas disminuye notablemente cuando la página está demasiado inclinada: hay que girar la imagen para que las líneas sean horizontales. Ver el número de arriba.
- Contraste y binarización
- Tesseract binariza internamente (algoritmo de Otsu), con resultados a veces mediocres cuando el fondo tiene una tonalidad desigual. La versión 5.0 añadió dos métodos, Adaptive Otsu y Sauvola, ajustables mediante los parámetros thresholding_*. Para un motor de versión 4 o superior, se necesita texto oscuro sobre fondo claro.
- Bordes
- Los márgenes muy amplios dificultan el funcionamiento del motor, pero también lo hace un recorte demasiado ajustado del texto: la documentación recomienda añadir un pequeño borde blanco (10 píxeles en su ejemplo) alrededor de un fragmento sin margen.
- 01Enderezar la páginaDetectar el ángulo dominante del texto y girar la imagen antes de todo lo demás; un simple script basado en la transformada de Hough basta para la mayoría de los escáneres de oficina.
- 02Mejorar el contrasteConvertir a escala de grises y luego binarizar (aplicar un umbral adaptativo en lugar de uno fijo, que falla con una iluminación desigual) para obtener negro puro sobre blanco puro.
- 03Recortar y ejecutar el OCREliminar los bordes del escáner y los grandes márgenes vacíos, dejar un fino borde blanco alrededor del texto y luego llamar a Tesseract con el idioma y el modo de segmentación adecuados al tipo de documento tratado.
#Los ajustes que cambian el resultado
| Opción | Para qué sirve | Cuándo modificarla |
|---|---|---|
| Modo de segmentación de página (--psm) | Indica al motor cómo está organizada la página: bloque único, columna, línea aislada (7), texto disperso (11) | En un ticket, una etiqueta, una columna estrecha o un pequeño recorte: el modo predeterminado espera una página entera |
| Modo del motor (--oem) | 1: solo la red neuronal LSTM; 0: motor histórico | Raramente: los archivos de idioma de los paquetes Linux comunes (tessdata_fast) solo manejan LSTM, y los modos 0 y 2 no funcionan con ellos |
| Lista de caracteres permitidos (tessedit_char_whitelist) | Limita el reconocimiento a un subconjunto de caracteres | En un campo puramente numérico, para reducir las confusiones entre letras y cifras |
| Diccionarios (load_system_dawg, load_freq_dawg) | Dos variables que activan las listas de palabras del motor | En recibos, listas de precios y códigos: desactivarlos puede ayudar cuando la mayor parte del texto no está compuesta por palabras comunes |
El modo de segmentación es el ajuste que más a menudo se olvida. La documentación lo recuerda: por defecto, Tesseract espera una página de texto, y para leer una zona pequeña hay que elegir otro modo. En una imagen que contiene una sola línea, el modo 7 la trata como una línea única. Para texto disperso sin un orden particular —una captura de pantalla con etiquetas repartidas por distintas zonas—, el modo correspondiente evita el mismo problema. El modo del motor, por su parte, rara vez cambia el resultado, por una razón práctica: el motor antiguo solo está presente en los archivos de idioma del repositorio tessdata, no en las variantes rápidas o precisas que incluyen la mayoría de las distribuciones.
Con texto impreso limpio y bien encuadrado, Tesseract sigue siendo competitivo: FastOCR, un servicio de OCR en línea que vende una alternativa en la nube, indica una precisión del 95 al 97,2 % para Tesseract v5 con texto inglés limpio, frente a una precisión del 98,2 al 99,1 % para Google Cloud Vision. Son cifras de una parte interesada, sin un protocolo publicado: tómalas como un orden de magnitud, no como una medición. La elección del motor debería basarse en la naturaleza real de los documentos: si están limpios y son impresos, Tesseract basta de sobra; si están dañados, son manuscritos o tienen una estructura densa, se convierte en el eslabón débil de la cadena.
#Tesseract o un modelo de visión
| Criterio | Tesseract | Modelo de visión local |
|---|---|---|
| Recursos | Solo procesador | GPU deseable, varios gigaoctetos |
| Velocidad | Muy rápido | Mucho más lento |
| Texto limpio en una columna | Excelente | Equivalente, más caro |
| Diseño complejo, tablas | Baja: la documentación del proyecto reconoce un problema conocido con las tablas | Mucho mejor |
| Escritura manuscrita | Muy bajo: 25 a 40 % según FastOCR | Significativamente mejor |
| Comprensión del contenido | Ninguna | Puede responder a una pregunta sobre el documento |
| Riesgo de invención | Bajo: confunde caracteres en lugar de generar valores | Real: un modelo puede alucinar un valor plausible |
Esta última línea es importante para cualquier control documental: Tesseract se equivoca al confundir caracteres, mientras que un modelo de visión puede generar un número perfectamente formado pero falso. La diferencia no es absoluta, porque un 0 leído como un 8 en un importe tampoco se detecta, pero un texto aberrante delata con más frecuencia a un motor de OCR que un valor plausible inventado. Una comparativa publicada en 2026 resume cómo ha cambiado el panorama: las verdaderas alternativas ya no son motores OCR clásicos, sino modelos de visión y lenguaje de código abierto, y menciona expresamente PaddleOCR-VL entre ellos. Esto tiene un coste como contrapartida, ya que estos modelos requieren una GPU, mientras que Tesseract se conforma con un procesador corriente.
- Los modelos multimodales locales, lo que saben leer
- Extraer los datos de una factura: la cadena completa
- Convertir documentos estructurados con Docling
- PaddleOCR: el motor que gestiona diseños de página complejos
- Fuente: repositorio oficial Tesseract en GitHub
- Fuente: Koncile, comparativa de Tesseract de 2026 (proveedor de software de extracción de datos de facturas)
- Fuente: página del manual de Tesseract (opciones --psm y --oem)
- Fuente: documentación Tesseract, mejorar la calidad
- Fuente: documentación Tesseract, archivos de datos
#El verdadero costo de un proyecto Tesseract
El motor en sí no cuesta nada, lo que a menudo oculta a qué se dedica realmente el tiempo de un proyecto OCR. El verdadero trabajo está en las tareas que rodean al motor: preprocesamiento de imágenes (corrección de la inclinación, binarización, bordes) y verificación del resultado. Un presupuesto realista reserva tiempo para estas dos etapas desde el principio, en lugar de descubrir su necesidad tras un primer lote de resultados decepcionantes.
- Escáner o foto tomada con el teléfono
- Un escáner plano produce páginas más rectas y mejor iluminadas que una foto tomada a pulso; priorizar el escáner siempre que el volumen lo justifique.
- Formato de salida
- El texto en bruto basta para la indexación; el formato hOCR conserva las posiciones, lo que resulta útil para resaltar un fragmento en la interfaz original.
- Control de calidad
- Una muestra revisada manualmente después de cada cambio de fuente de escaneo permite detectar una desviación antes de que afecte a todo el lote.
- Volumen y paralelización
- Tesseract es multihilo por defecto (OpenMP), lo cual no es adecuado para grandes lotes. La sección de preguntas frecuentes del proyecto recomienda lanzar un proceso por núcleo con la variable OMP_THREAD_LIMIT=1, que elimina el sobrecoste del multihilo.
Un último aspecto que suele olvidarse: cómo nombrar los archivos generados. Cuando hay varios miles de páginas, hay que poder identificar qué texto corresponde a qué escaneo; conservar el mismo nombre base para la imagen y el texto reconocido resuelve el problema desde el principio.
#Insertarlo en una cadena local
En una instalación documental local, Tesseract interviene en un solo punto: justo antes de la indexación, en los documentos que carecen de capa de texto. La prueba que hay que automatizar es sencilla: si la extracción de texto de un PDF devuelve menos de unas pocas decenas de caracteres por página (umbral que debes ajustar según tu corpus), probablemente se trate de un documento escaneado y se envía al OCR. Sin esta prueba, documentos enteros entran vacíos en el índice sin que nadie lo advierta, hasta que un usuario se extraña.
La corrección de la inclinación y la binarización deberían automatizarse en este mismo pipeline en lugar de decidirse página por página: un script que detecta el ángulo dominante y corrige la inclinación antes de llamar al motor evita buena parte de las sorpresas desagradables descritas más arriba. En un lote homogéneo —siempre el mismo escáner, el mismo tipo de documento— este preprocesamiento se configura una vez y luego funciona sin supervisión.
#FAQ
¿Tesseract es gratuito?+
¿Cómo hacerle leer francés?+
¿Por qué mi resultado es ilegible?+
¿Sabe Tesseract leer tablas?+
¿Se debe preferir un modelo de visión?+
¿Qué es el modo de segmentación de página?+
¿Cómo hacer que se puedan realizar búsquedas en un PDF escaneado con Tesseract?+
¿Un comentario, un error, una precisión? Avísanos, eso mejora la guía para todos.