Top 7 Bibliotecas de OCR de Python para la Extracción de Texto de Imágenes

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 de 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 mejores bibliotecas de OCR en Python, resaltando sus fortalezas, características únicas y ejemplos de código para ayudarte a comenzar.

1. Tesseract OCR (pytesseract)

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

Características Clave:

  • Código abierto y gratuito para usar.
  • Soporta múltiples idiomas, incluidos alfabetos no latinos.
  • Reconoce texto en imágenes, documentos escaneados y PDFs.
  • Puede ser personalizado con datos de entrenamiento 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, sigue estos pasos dependiendo de tu 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 quieres usarlo con Python, necesitas instalar el paquete pytesseract usando el gestor de paquetes pip.

pip3 install pytesseract
OR
pip install pytesseract

Aquí tienes un ejemplo de código en Python 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. EasyOCR

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

Características Principales:

  • Alta precisión con modelos de aprendizaje profundo.
  • Soporta 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, puedes usar el siguiente comando pip basado en tu distribución.

pip3 install easyocr
OR
pip install easyocr

Una vez que la instalación esté completa, puedes usar 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. Aunque se utiliza principalmente para documentos y libros históricos, OCRopus también se puede aplicar a una amplia variedad de tareas de extracción de texto.

Características clave:

  • Especializado en análisis de diseño de documentos y extracción de texto.
  • Diseñado con modularidad en mente, lo que permite una fácil personalización.
  • Puede trabajar con documentos de varias páginas y conjuntos de datos grandes.

Aquí tienes 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 envoltorio Python alrededor de varios motores OCR, incluyendo Tesseract y CuneiForm. Proporciona una interfaz sencilla para integrar la funcionalidad OCR en aplicaciones Python.

Características clave:

  • Puede interactuar con varios motores 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 OCR) y Pillow (biblioteca de procesamiento de imágenes). Puedes instalarlos utilizando 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í tienes un ejemplo en 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 OCR desarrollada por PaddlePaddle, un marco de aprendizaje profundo. Admite más de 80 idiomas y ofrece una precisión de vanguardia debido a su uso de modelos de aprendizaje profundo.

Características clave:

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

Para instalar PaddleOCR en Linux, usa:

pip3 install paddlepaddle paddleocr
OR
pip install paddlepaddle paddleocr

Aquí tienes un ejemplo en 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 OCR de alto rendimiento diseñada específicamente para texto histórico y multilingüe. Está construida sobre OCRopus y proporciona características 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 una mejor precisión de reconocimiento.

Para instalar Kraken en Linux, utiliza:

pip3 install kraken
OR
pip install kraken

Aquí tienes un ejemplo en Python que extrae texto de una imagen utilizando la biblioteca kraken:

import kraken

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

# Print the recognized text
print(text)

7. Textract (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 los servicios de AWS para un procesamiento adicional de datos.

Para instalar Textract en Linux, utiliza:

pip3 install boto3
OR
pip install boto3

Aquí tienes 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

Elegir la biblioteca OCR adecuada en Python depende del caso de uso específico, los requisitos del lenguaje y la complejidad de los documentos que estás procesando. Ya sea que estés trabajando en documentos históricos, textos multilingües o simplemente PDFs escaneados, estas bibliotecas ofrecen herramientas potentes 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 una mayor flexibilidad y precisión.

Source:
https://www.tecmint.com/python-text-extraction-from-images/