Principais 7 Bibliotecas de OCR Python 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 escritas à mão. 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 seus pontos fortes, recursos exclusivos e exemplos de código para ajudá-lo a começar.

1. Tesseract OCR (pytesseract)

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

Características Principais:

  • 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 o Tesseract OCR no Linux, siga estes passos 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]

Uma vez que o Tesseract estiver instalado, se deseja utilizá-lo com o Python, você precisa 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 o 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

O EasyOCR é outra excelente biblioteca Python de OCR que suporta mais de 80 idiomas e é fácil de usar para iniciantes. Ele é construído sobre técnicas de aprendizado profundo, tornando-se uma excelente escolha para aqueles que desejam aproveitar a tecnologia OCR moderna.

Recursos Principais:

  • 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 o 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 utilizado 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.
  • Desenvolvido com modularidade em mente, permitindo personalização fácil.
  • 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 invólucro Python em torno de vários motores OCR, incluindo Tesseract e CuneiForm. Ele fornece uma interface simples para integrar funcionalidades de 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 imagens para resultados aprimorados.

PyOCR requer Tesseract (motor OCR) e Pillow (biblioteca de processamento de imagens). 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 pela PaddlePaddle, um framework de deep learning. Ele suporta mais de 80 idiomas e oferece precisão de ponta devido ao uso de modelos de deep learning.

Principais Características:

  • 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 texto histórico e multilíngue. Ele é construído em cima do OCRopus e fornece recursos adicionais para layouts complexos e extração de texto.

Principais Características:

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

Para instalar o Kraken no Linux, utilize:

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)

O AWS Textract é o serviço de OCR baseado em 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 em nuvem com soluções escaláveis.
  • Suporta análise de estrutura de documentos, incluindo tabelas e formulários.
  • Integração com os serviços da AWS para processamento de dados adicional.

Para instalar o Textract no Linux, utilize:

pip3 install boto3
OR
pip install boto3

Aqui está um exemplo de script em Python que usa o 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

Escolher a 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, o Tesseract e o 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 o PaddleOCR, o OCRopus e o Kraken oferecem maior flexibilidade e precisão.

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