Búsqueda de sitios web

Las 7 mejores bibliotecas de OCR de Python para la conversión de imagen a texto


El reconocimiento óptico de caracteres (OCR) es una tecnología que extrae texto legible de imágenes, documentos escaneados e incluso notas escritas a mano. En Python, las herramientas OCR han evolucionado significativamente a lo largo de los años y, con la última versión, estas bibliotecas ahora ofrecen soluciones aún más potentes y eficientes.

Este artículo cubrirá las siete bibliotecas OCR principales en Python, destacando sus puntos fuertes, características únicas y ejemplos de código para ayudarle a comenzar.

1. Tesseract OCR (pytesseract)

Tesseract es sin duda la biblioteca OCR más popular y utilizada en el ecosistema Python. Desarrollado originalmente por HP y ahora mantenido por Google, Tesseract proporciona capacidades de OCR de alta calidad para más de 100 idiomas.

Características clave:

  • De código abierto y de uso gratuito.
  • Admite varios idiomas, incluidos alfabetos no latinos.
  • Reconoce texto en imágenes, documentos escaneados y archivos PDF.
  • Se puede personalizar con datos de capacitación personalizados para casos de uso especializados.
  • Funciona bien con herramientas de preprocesamiento como OpenCV para mejorar la precisión.

Para instalar Tesseract OCR en Linux, siga estos pasos dependiendo de su distribución:

sudo apt install tesseract-ocr     [On Debian, Ubuntu and Mint]
sudo yum install tesseract         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/tesseract  [On Gentoo Linux]
sudo apk add tesseract             [On Alpine Linux]
sudo pacman -S tesseract           [On Arch Linux]
sudo zypper install tesseract      [On OpenSUSE]    
sudo pkg install tesseract         [On FreeBSD]

Una vez que Tesseract esté instalado, si desea usarlo con Python, debe instalar el paquete pytesseract usando el administrador de paquetes pip.

pip3 install pytesseract
OR
pip install pytesseract

A continuación se muestra un código Python de ejemplo para usar Tesseract OCR con la biblioteca pytesseract para extraer texto de una imagen.

import pytesseract
from PIL import Image

Load an image
img = Image.open("image_sample.png")

Use Tesseract to extract text
text = pytesseract.image_to_string(img)

Print the extracted text
print(text)

2. FácilOCR

EasyOCR es otra excelente biblioteca de OCR de Python que admite más de 80 idiomas y es fácil de usar para principiantes. Se basa en técnicas de aprendizaje profundo, lo que lo convierte en una excelente opción para quienes desean aprovechar la tecnología OCR moderna.

Características clave:

  • Alta precisión con modelos de aprendizaje profundo.
  • Admite una amplia gama de idiomas.
  • Puede detectar texto en imágenes verticales y multilingües.
  • API simple y fácil de entender.

Para instalar EasyOCR en Linux, puede utilizar el siguiente comando pip según su distribución.

pip3 install easyocr
OR
pip install easyocr

Una vez completada la instalación, puede utilizar EasyOCR para extraer texto de una imagen.

import easyocr

Initialize the OCR reader
reader = easyocr.Reader(['en'])

Extract text from an image
result = reader.readtext('image_sample.png')

Print the extracted text
for detection in result:
    print(detection[1])

3. OCRopus

OCRopus es un sistema OCR de código abierto desarrollado por Google. Si bien se utiliza principalmente para libros y documentos históricos, OCRopus también se puede aplicar a una amplia variedad de tareas de extracción de texto.

Características clave:

  • Se especializa en análisis de diseño de documentos y extracción de texto.
  • Construido teniendo en cuenta la modularidad, lo que permite una fácil personalización.
  • Puede trabajar con documentos de varias páginas y grandes conjuntos de datos.

Aquí hay un ejemplo de código Python para extraer texto de una imagen.

import subprocess

Use OCRopus to process an image
subprocess.run(['ocropus', 'identify', 'image_sample.png'])

4. PyOCR

PyOCR es un contenedor de Python para varios motores de OCR, incluidos Tesseract y CuneiForm. Proporciona una interfaz sencilla para integrar la funcionalidad OCR en aplicaciones Python.

Características clave:

  • Puede interactuar con múltiples motores de OCR.
  • Proporciona una API sencilla para la extracción de texto.
  • Se puede combinar con bibliotecas de preprocesamiento de imágenes para obtener mejores resultados.

PyOCR requiere Tesseract (motor de OCR) y Pillow (biblioteca de procesamiento de imágenes). Puede instalarlos usando los siguientes comandos:

sudo apt install tesseract-ocr     [On Debian, Ubuntu and Mint]
sudo yum install tesseract         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/tesseract  [On Gentoo Linux]
sudo apk add tesseract             [On Alpine Linux]
sudo pacman -S tesseract           [On Arch Linux]
sudo zypper install tesseract      [On OpenSUSE]    
sudo pkg install tesseract         [On FreeBSD]

Ahora, puedes instalar las bibliotecas pyocr y pillow usando pip:

pip3 install pyocr pillow
OR
pip install pyocr pillow

Aquí hay un ejemplo de Python que extrae texto de una imagen usando PyOCR y Tesseract:

import pyocr
from PIL import Image

Choose the OCR tool (Tesseract or CuneiForm)
tool = pyocr.get_available_tools()[0]

Load the image
img = Image.open('image_sample.png')

Extract text from the image
text = tool.image_to_string(img)

Print the extracted text
print(text)

5. PaddleOCR

PaddleOCR es una biblioteca de OCR desarrollada por PaddlePaddle, un marco de aprendizaje profundo. Admite más de 80 idiomas y ofrece precisión de vanguardia debido al uso de modelos de aprendizaje profundo.

Características clave:

  • Alto rendimiento, especialmente para imágenes con fondos complejos.
  • Admite detección, reconocimiento y análisis de diseño de texto.
  • Incluye modelos previamente entrenados para una variedad de idiomas.

Para instalar PaddleOCR en Linux, utilice:

pip3 install paddlepaddle paddleocr
OR
pip install paddlepaddle paddleocr

Aquí hay un ejemplo de Python que extrae texto de una imagen usando la biblioteca paddleocr:

from paddleocr import PaddleOCR

Initialize the OCR
ocr = PaddleOCR(use_angle_cls=True, lang='en')

Perform OCR on an image
result = ocr.ocr('image_sample.png', cls=True)

Print the extracted text
for line in result[0]:
    print(line[1])

6. Kraken

Kraken es una biblioteca de OCR de alto rendimiento diseñada específicamente para texto histórico y multilingüe. Está construido sobre OCRopus y proporciona funciones adicionales para diseños complejos y extracción de texto.

Características clave:

  • Ideal para libros antiguos y OCR multilingüe.
  • Maneja diseños de texto complejos y fuentes históricas.
  • Utiliza el aprendizaje automático para mejorar la precisión del reconocimiento.

Para instalar Kraken en Linux, utilice:

pip3 install kraken
OR
pip install kraken

Aquí hay un ejemplo de Python que extrae texto de una imagen usando la biblioteca kraken:

import kraken

Load the model and recognize text
text = kraken.binarize("image_sample.png")

Print the recognized text
print(text)

7. Extracto de texto (AWS)

AWS Textract es el servicio de OCR basado en la nube de Amazon que puede analizar documentos y formularios y extraer texto con alta precisión. Se integra perfectamente con otros servicios de AWS.

Características clave:

  • OCR basado en la nube con soluciones escalables.
  • Admite el análisis de la estructura de documentos, incluidas tablas y formularios.
  • Integración con servicios de AWS para un mayor procesamiento de datos.

Para instalar Textract en Linux, utilice:

pip3 install boto3
OR
pip install boto3

A continuación se muestra un script de Python de ejemplo que utiliza AWS Textract para extraer texto de un documento (por ejemplo, un PDF escaneado o un archivo de imagen).

import boto3

Initialize a Textract client
client = boto3.client('textract')

Path to the image or PDF file you want to analyze
file_path = 'path_to_your_file.png'  # Replace with your file path

Open the file in binary mode
with open(file_path, 'rb') as document:
    # Call Textract to analyze the document
    response = client.detect_document_text(Document={'Bytes': document.read()})

Print the extracted text
for item in response['Blocks']:
    if item['BlockType'] == 'LINE':
        print(item['Text'])
Conclusión

La elección de la biblioteca de OCR adecuada en Python depende del caso de uso específico, los requisitos del idioma y la complejidad de los documentos que está procesando. Ya sea que esté trabajando en documentos históricos, textos multilingües o simples archivos PDF escaneados, estas bibliotecas brindan poderosas herramientas para la extracción de texto.

Para principiantes, Tesseract y EasyOCR son excelentes puntos de partida debido a su facilidad de uso y amplia adopción. Sin embargo, para tareas más avanzadas o especializadas, bibliotecas como PaddleOCR, OCRopus y Kraken ofrecen mayor flexibilidad y precisión.

Artículos relacionados: