Elige un SDK OCR de código abierto para Android e iOS
Si buscas un SDK OCR para Android con un motor de código abierto y control sobre los modelos de idioma, empieza por Tesseract4Android. En iOS, la guía de inicio rápido heredada de TesseractOCRiOS presenta un impedimento para la compilación nativa en la configuración comprobada aquí. Usa esta guía para elegir una vía de integración, conocer sus requisitos de modelos y plataformas, y encontrar la guía de implementación correspondiente.
Decide qué debe ser de código abierto
El OCR convierte el texto de las imágenes en cadenas que tu aplicación puede mostrar o procesar. Antes de elegir un SDK, distingue el control sobre el motor de reconocimiento de la capacidad de procesar imágenes en el dispositivo. Si necesitas un motor que puedas inspeccionar, modificar y compilar, Tesseract cumple ese requisito. Una API que funciona en el dispositivo no otorga por sí sola esos derechos.
Google ML Kit y Apple Vision son alternativas propietarias, sujetas a los términos de ML Kit de Google y a los términos de licencia del SDK de Apple. No son sustitutos de código abierto de Tesseract. ML Kit procesa las imágenes de entrada en el dispositivo, pero sus términos también describen el envío de métricas de uso y rendimiento a Google; el reconocimiento local no significa que el SDK nunca se comunique por la red.
Panorama de los SDK OCR de código abierto
| Opción | Motor y licencia | Por dónde empezar |
|---|---|---|
| Tesseract4Android 4.8.0 | Capa de integración con licencia Apache-2.0 para Tesseract 5.5.0 | Integración en Java para Android con tus propios datos de idioma incluidos |
| TesseractOCRiOS 4.0.0 | Capa de integración con licencia MIT para Tesseract 3.03-rc1 | Referencia para mantenimiento de sistemas heredados; consulta la limitación de compilación nativa más abajo |
| Google ML Kit | SDK propietario de Google | Reconocimiento de fotos en Android cuando un motor de código abierto es opcional |
| Apple Vision | Framework propietario de Apple | Reconocimiento de imágenes fijas en iOS cuando un motor de código abierto es opcional |
Tesseract en sí usa Apache-2.0.
La licencia de la capa de integración no cubre todo lo que se distribuye con ella: las dependencias
nativas y los modelos de idioma tienen sus propias licencias. El modelo de inglés de la guía de
Android proviene de
tessdata 4.0.0, cuyos datos tienen licencia Apache-2.0.
Comprueba por separado la procedencia y la licencia de cualquier modelo de reemplazo.
Requisitos previos
Elige una guía que se ajuste a tus datos de entrada y a tu entorno de desarrollo:
- OCR con cámara en Android mediante Tesseract: Java, Android Studio, SDK Platform 36 y JDK 21. El proyecto enlazado requiere API 23 o posterior debido a su dependencia de CameraX. El mínimo de API 21 de Tesseract4Android no reduce el requisito de la aplicación completa; consulta el cambio del SDK mínimo de CameraX.
- OCR de fotos en Android mediante ML Kit: Kotlin, SDK Platform 36, JDK 21 y API 23 o posterior, según los requisitos de configuración de Google.
- OCR de imágenes en iOS mediante Vision: una Mac con Xcode, conocimientos de Swift y un simulador o dispositivo iOS. La aplicación enlazada usa la API de Vision nativa de Swift, disponible a partir de iOS 18.
Las guías de implementación proporcionan la configuración completa de los proyectos y las cadenas de herramientas probadas. Sus comprobaciones en un emulador de Android 16 y un simulador de iOS 27 no demuestran el comportamiento en todos los sistemas operativos compatibles ni en todas las cámaras físicas. Elige documentos representativos en los idiomas que necesitas antes de evaluar la calidad del reconocimiento.
Configura Tesseract OCR en Android
Sigue la configuración del proyecto Tesseract para Android
desde el principio. Fija conjuntamente las versiones de Tesseract4Android 4.8.0,
OpenCV 4.13.0 y CameraX 1.6.2,
y configura JitPack para la dependencia de Tesseract. Conserva esas versiones durante el tutorial
antes de probar actualizaciones.
La configuración incluye el
modelo de inglés de tessdata 4.0.0
en app/src/main/assets/tessdata/eng.traineddata. Su gestor copia ese archivo en el almacenamiento
privado de la aplicación antes de la inicialización. Tesseract necesita un directorio legible del
sistema de archivos que contenga tessdata; un archivo incluido
dentro del APK no es ese directorio. Incluir el modelo evita tener que descargarlo en la primera
ejecución, a costa de conservar tanto el archivo empaquetado como su copia privada.
Haz que la familia del modelo coincida con el modo del motor. La
documentación de datos de entrenamiento de Tesseract distingue
tessdata, tessdata_fast y tessdata_best;
los dos últimos requieren el motor LSTM. Una versión de la capa de integración como
4.8.0 no es la versión del motor incluido ni la del modelo.
Implementa OCR en una aplicación Android
La clase OCRManager.java completa
instala el modelo, reconoce un mapa de bits y libera los recursos nativos. Mantén la inicialización,
el reconocimiento y la limpieza en un único worker en segundo plano que ejecute las tareas en serie.
La actividad que lo utiliza proporciona la gestión del permiso de cámara, la rotación de fotogramas
y una cola de análisis acotada; copiar solo el gestor no basta para crear un escáner con cámara.
Sigue los pasos de solución de problemas de esa guía para distinguir un modelo ausente o dañado de un resultado de reconocimiento vacío. Si planeas distribuir la aplicación, sigue el procedimiento de verificación del tamaño de página de 16 KB de Android para el APK completo y sus bibliotecas nativas.
Si necesitas un selector de archivos o capturar una sola foto, y puedes usar un SDK propietario, sigue la guía de reconocimiento de fotos con ML Kit en Kotlin. Usa el modelo de escritura latina incluido, muestra los resultados vacíos y de imágenes ilegibles, y gestiona la cancelación de la selección o la captura. La dependencia alternativa de Google basada en Play services descarga su modelo; no puede devolver resultados de reconocimiento antes de que ese modelo esté listo.
Evalúa el SDK heredado de Tesseract OCR para iOS
No adoptes la antigua guía de inicio rápido de CocoaPods como una configuración funcional para iOS
moderno. Según la comprobación del 23 de septiembre de 2026, el
podspec de TesseractOCRiOS 5.0.1
apunta a una etiqueta 5.0.1 que no aparece entre las
etiquetas del proyecto original. El registro en CocoaPods no
demuestra que se pueda obtener su código fuente.
Se puede obtener el archivo contenedor del código fuente de 4.0.0.
Sin embargo, el enlace de su libtesseract_all.a sin modificar para un
simulador iOS arm64 con Xcode 27.0 y el SDK de iOS Simulator 27.0 falla con el diagnóstico
«64-bit mach-o not 8-byte aligned». Un programa de control se enlaza sin esa biblioteca. Este
problema impide la compilación nativa en esa configuración, por lo que aquí no hay una ejecución
exitosa de OCR en iOS que permita recomendar este paquete. Esto no demuestra que fallen todos los
ports de Tesseract ni todas las configuraciones de dispositivos antiguos.
El README de la versión etiquetada también identifica a
Tesseract 3.03-rc1 como el motor incluido. Sus requisitos de
modelos heredados difieren de los datos de entrenamiento 4.0.0
de la guía de Android. Cambiar una versión en el Podfile o copiar el modelo de Android no resuelve
el problema de compilación nativa.
Implementa OCR en una aplicación iOS
Si un motor de código abierto es obligatorio, reserva recursos para validar y mantener una integración de Tesseract para iOS. Antes de adoptarla, exige una compilación a partir del código fuente o paquete elegido, binarios compatibles con dispositivos y simuladores, y el reconocimiento con los modelos de idioma que realmente usarás. SwiftyTesseract está archivado, y su responsable de mantenimiento indica que no recibirá más actualizaciones. Cambiar únicamente la capa de integración no resuelve el mantenimiento ni la compatibilidad.
Si un framework propietario de Apple cumple tus requisitos, sigue la
guía de OCR de imágenes fijas con SwiftUI.
Usa RecognizeTextRequest para leer imágenes PNG y JPEG locales seleccionadas
en Archivos, conservar la orientación de las imágenes y mostrar texto en inglés seleccionable.
Incluye los archivos de la aplicación, los pasos para introducir imágenes en el simulador, los
mensajes de error y la gestión de cancelaciones, sin un binario de OCR de terceros ni un directorio
tessdata. La aplicación mantiene la transcripción en memoria en
lugar de guardar un historial de escaneos.
Ese es un flujo de trabajo con imágenes fijas. Para un escáner con cámara en vivo, la misma guía explica la integración independiente de VisionKit y las comprobaciones en dispositivos físicos. Una prueba con imágenes en un simulador no permite verificar la recuperación del permiso de cámara, el enfoque ni la calidad del reconocimiento en un teléfono real.
Consejos para optimizar el rendimiento del OCR
Empieza con texto nítido, sin rotación y con suficientes píxeles para distinguir los caracteres. Recorta el fondo que pueda distraer, dejando un pequeño borde. Tesseract ya binariza las imágenes internamente; compara tu preprocesamiento con el original antes de añadir umbralización o desenfoque. Su guía de calidad de imagen explica la corrección de inclinación, los bordes y la elección de la segmentación de página para una línea, un bloque o una página.
Antes de elegir un motor, procesa el mismo conjunto pequeño de documentos con las integraciones candidatas. Incluye una imagen con texto conocido, una imagen en blanco, un JPEG rotado con metadatos de orientación y un archivo dañado o ausente. Comprueba que el texto vacío se pueda distinguir de un fallo y que las tareas canceladas o desactualizadas no puedan reemplazar un resultado más reciente. Prueba una instalación nueva sin conexión si eso es importante para tu aplicación, usando imágenes ya almacenadas localmente. Después, mide los errores en los campos que realmente necesitas, como los números de factura, en lugar de tomar una sola muestra sin errores como referencia de precisión.
