
OCR listo para usar con más de 80 idiomas compatibles y todos los sistemas de escritura populares, incluidos latino, chino, árabe, devanagari, cirílico, etc.
OCR listo para usar con más de 80 idiomas compatibles y todos los sistemas de escritura populares, incluidos: latino, chino, árabe, devanagari, cirílico, etc.
Prueba la demo en nuestro sitio web
Integrado en Huggingface Spaces 🤗 usando Gradio. Prueba la demo web:
24 de septiembre de 2024 - Versión 1.7.2



Instalar usando pip
Para la última versión estable:
pip install easyocr
Para la última versión en desarrollo:
pip install git+https://github.com/JaidedAI/EasyOCR.git
Nota 1: Para Windows, instala primero torch y torchvision siguiendo las instrucciones oficiales en https://pytorch.org. En el sitio web de pytorch, asegúrate de seleccionar la versión correcta de CUDA que tengas. Si tienes intención de ejecutar solo en modo CPU, selecciona CUDA = None.
Nota 2: También proporcionamos un Dockerfile aquí.
import easyocr
reader = easyocr.Reader(['ch_sim','en']) # this needs to run only once to load the model into memory
result = reader.readtext('chinese.jpg')
La salida estará en formato de lista. Cada elemento representa un cuadro delimitador, el texto detectado y el nivel de confianza, respectivamente.
[([[189, 75], [469, 75], [469, 165], [189, 165]], '愚园路', 0.3754989504814148),
([[86, 80], [134, 80], [134, 128], [86, 128]], '西', 0.40452659130096436),
([[517, 81], [565, 81], [565, 123], [517, 123]], '东', 0.9989598989486694),
([[78, 126], [136, 126], [136, 156], [78, 156]], '315', 0.8125889301300049),
([[514, 126], [574, 126], [574, 156], [514, 156]], '309', 0.4971577227115631),
([[226, 170], [414, 170], [414, 220], [226, 220]], 'Yuyuan Rd.', 0.8261902332305908),
([[79, 173], [125, 173], [125, 213], [79, 213]], 'W', 0.9848111271858215),
([[529, 173], [569, 173], [569, 213], [529, 213]], 'E', 0.8405593633651733)]
Nota 1: ['ch_sim','en'] es la lista de idiomas que quieres leer. Puedes pasar varios idiomas a la vez, pero no todos los idiomas pueden usarse juntos. El inglés es compatible con todos los idiomas y los idiomas que comparten caracteres comunes suelen ser compatibles entre sí.
Nota 2: En lugar de la ruta de archivo chinese.jpg, también puedes pasar un objeto de imagen de OpenCV (array de numpy) o un archivo de imagen como bytes. Una URL a una imagen sin procesar también es aceptable.
Nota 3: La línea reader = easyocr.Reader(['ch_sim','en']) sirve para cargar un modelo en memoria. Tarda un poco, pero solo necesita ejecutarse una vez.
También puedes establecer detail=0 para una salida más simple.
reader.readtext('chinese.jpg', detail = 0)
Resultado:
['愚园路', '西', '东', '315', '309', 'Yuyuan Rd.', 'W', 'E']
Los pesos del modelo para el idioma elegido se descargarán automáticamente, o puedes descargarlos manualmente desde el model hub y colocarlos en la carpeta '~/.EasyOCR/model'.
En caso de que no tengas una GPU, o tu GPU tenga poca memoria, puedes ejecutar el modelo en modo solo CPU añadiendo gpu=False.
reader = easyocr.Reader(['ch_sim','en'], gpu=False)
Para más información, lee el tutorial y la Documentación de la API.
$ easyocr -l ch_sim en -f chinese.jpg --detail=1 --gpu=True
Para el modelo de reconocimiento, lee aquí.
Para el modelo de detección (CRAFT), lee aquí.
reader = easyocr.Reader(['en'], detection='DB', recognition = 'Transformer')
La idea es poder conectar cualquier modelo de última generación en EasyOCR. Hay muchos genios tratando de crear mejores modelos de detección/reconocimiento, pero nosotros no intentamos ser genios aquí. Solo queremos hacer que su trabajo sea rápidamente accesible al público... de forma gratuita. (bueno, creemos que la mayoría de los genios quieren que su trabajo genere un impacto positivo lo más rápido/grande posible). El flujo de trabajo debería ser algo como el siguiente diagrama. Los espacios grises son marcadores de posición para los módulos azul claro intercambiables.

Este proyecto se basa en la investigación y el código de varios artículos y repositorios de código abierto.
Toda la ejecución de aprendizaje profundo se basa en Pytorch. ❤️
La detección utiliza el algoritmo CRAFT de este repositorio oficial y su artículo (Gracias @YoungminBaek de @clovaai). También usamos su modelo preentrenado. El script de entrenamiento es proporcionado por @gmuffiness.
El modelo de reconocimiento es un CRNN (artículo). Se compone de 3 componentes principales: extracción de características (actualmente usamos Resnet y VGG), etiquetado de secuencias (LSTM) y decodificación (CTC). El flujo de trabajo de entrenamiento para la ejecución del reconocimiento es una versión modificada del framework deep-text-recognition-benchmark. (Gracias @ku21fan de @clovaai) Este repositorio es una joya que merece más reconocimiento.