Principais 7 Bibliotecas Python OCR para Extração de Texto de Imagens

Reconhecimento Óptico de Caracteres (OCR) é uma tecnologia que extrai texto legível de imagens, documentos digitalizados e até mesmo notas manuscritas. Em Python, as ferramentas de OCR evoluíram significativamente ao longo dos anos, e com a versão mais recente, essas bibliotecas agora oferecem soluções ainda mais poderosas e eficientes.

Este artigo abordará as sete principais bibliotecas de OCR em Python, destacando suas forças, características únicas e exemplos de código para ajudá-lo a começar.

1. Tesseract OCR (pytesseract)

Tesseract é, sem dúvida, a biblioteca de OCR mais popular e amplamente utilizada no ecossistema Python. Originalmente desenvolvida pela HP e agora mantida pelo Google, Tesseract fornece capacidades de OCR de alta qualidade para mais de 100 idiomas.

Principais Características:

  • Código aberto e gratuito para uso.
  • Suporta vários idiomas, incluindo alfabetos não latinos.
  • Reconhece texto em imagens, documentos digitalizados e PDFs.
  • Pode ser personalizado com dados de treinamento personalizados para casos de uso especializados.
  • Funciona bem com ferramentas de pré-processamento como OpenCV para melhorar a precisão.

Para instalar Tesseract OCR no Linux, siga estas etapas dependendo da sua distribuição:

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]

Depois que Tesseract estiver instalado, se você quiser usá-lo com Python, precisará instalar o pacote pytesseract usando o gerenciador de pacotes pip.

pip3 install pytesseract
OR
pip install pytesseract

Aqui está um exemplo de código Python para usar Tesseract OCR com a biblioteca pytesseract para extrair texto de uma imagem.

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 é outra excelente biblioteca Python de OCR que suporta mais de 80 idiomas e é fácil de usar para iniciantes. É construída com técnicas de aprendizado profundo, tornando-a uma excelente escolha para aqueles que desejam aproveitar a tecnologia moderna de OCR.

Principais Características:

  • Alta precisão com modelos de aprendizado profundo.
  • Suporta uma ampla gama de idiomas.
  • Pode detectar texto em imagens verticais e multilíngues.
  • API simples e fácil de entender.

Para instalar EasyOCR no Linux, você pode usar o seguinte comando pip com base na sua distribuição.

pip3 install easyocr
OR
pip install easyocr

Uma vez que a instalação estiver completa, você pode usar o EasyOCR para extrair texto de uma imagem.

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 é um sistema OCR de código aberto desenvolvido pelo Google. Embora seja principalmente usado para documentos históricos e livros, o OCRopus também pode ser aplicado a uma ampla variedade de tarefas de extração de texto.

Recursos principais:

  • Especializado em análise de layout de documentos e extração de texto.
  • Construído com modularidade em mente, permitindo fácil personalização.
  • Pode trabalhar com documentos de várias páginas e grandes conjuntos de dados.

Aqui está um exemplo de código Python para extrair texto de uma imagem.

import subprocess

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

4. PyOCR

PyOCR é um wrapper Python em torno de vários motores OCR, incluindo Tesseract e CuneiForm. Ele fornece uma interface simples para integrar funcionalidades OCR em aplicativos Python.

Recursos principais:

  • Pode se comunicar com vários motores OCR.
  • Fornece uma API simples para extração de texto.
  • Pode ser combinado com bibliotecas de pré-processamento de imagem para resultados aprimorados.

PyOCR requer o Tesseract (motor OCR) e o Pillow (biblioteca de processamento de imagem). Você pode instalá-los usando os seguintes 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]

Agora, você pode instalar as bibliotecas pyocr e pillow usando pip:

pip3 install pyocr pillow
OR
pip install pyocr pillow

Aqui está um exemplo em Python que extrai texto de uma imagem usando PyOCR e 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

O PaddleOCR é uma biblioteca OCR desenvolvida pelo PaddlePaddle, um framework de aprendizado profundo. Ele suporta mais de 80 idiomas e oferece uma precisão de ponta devido ao uso de modelos de aprendizado profundo.

Recursos Principais:

  • Alto desempenho, especialmente para imagens com fundos complexos.
  • Suporta detecção de texto, reconhecimento e análise de layout.
  • Inclui modelos pré-treinados para uma variedade de idiomas.

Para instalar o PaddleOCR no Linux, use:

pip3 install paddlepaddle paddleocr
OR
pip install paddlepaddle paddleocr

Aqui está um exemplo em Python que extrai texto de uma imagem usando a 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

O Kraken é uma biblioteca OCR de alto desempenho projetada especificamente para textos históricos e multilíngues. É construído em cima do OCRopus e fornece recursos adicionais para layouts complexos e extração de texto.

Recursos Principais:

  • Mais adequado para livros antigos e OCR multilíngue.
  • Manuseia layouts de texto complexos e fontes históricas.
  • Usa aprendizado de máquina para obter uma maior precisão de reconhecimento.

Para instalar Kraken no Linux, use:

pip3 install kraken
OR
pip install kraken

Aqui está um exemplo em Python que extrai texto de uma imagem usando a 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 é o serviço OCR baseado na nuvem da Amazon que pode analisar documentos e formulários e extrair texto com alta precisão. Ele se integra perfeitamente com outros serviços da AWS.

Recursos Principais:

  • OCR baseado na nuvem com soluções escaláveis.
  • Suporta análise da estrutura do documento, incluindo tabelas e formulários.
  • Integração com os serviços da AWS para processamento adicional de dados.

Para instalar Textract no Linux, use:

pip3 install boto3
OR
pip install boto3

Aqui está um exemplo de script Python que usa AWS Textract para extrair texto de um documento (por exemplo, um PDF digitalizado ou arquivo de imagem).

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'])
Conclusão

A escolha da biblioteca OCR certa em Python depende do caso de uso específico, dos requisitos de idioma e da complexidade dos documentos que você está processando. Seja trabalhando em documentos históricos, textos multilíngues ou simples PDFs digitalizados, essas bibliotecas fornecem ferramentas poderosas para extração de texto.

Para iniciantes, Tesseract e EasyOCR são excelentes pontos de partida devido à facilidade de uso e ampla adoção. No entanto, para tarefas mais avançadas ou especializadas, bibliotecas como PaddleOCR, OCRopus e Kraken oferecem maior flexibilidade e precisão.

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