Pesquisa de site

7 melhores bibliotecas Python OCR para conversão de imagem em texto


O 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. OCR Tesseract (pytesseract)

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

Principais recursos:

  • Código aberto e de uso gratuito.
  • 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 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 o Tesseract estiver instalado, se quiser usá-lo com o Python, você 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 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. FácilOCR

EasyOCR é outra excelente biblioteca Python OCR que suporta mais de 80 idiomas e é fácil de usar para iniciantes. Ele é baseado em técnicas de aprendizado profundo, o que o torna uma excelente escolha para quem deseja aproveitar a tecnologia moderna de OCR.

Principais recursos:

  • Alta precisão com modelos de aprendizado profundo.
  • Suporta uma ampla variedade 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

Assim que a instalação for concluída, 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 usado principalmente para documentos e livros históricos, o OCRopus também pode ser aplicado a uma ampla variedade de tarefas de extração de texto.

Principais recursos:

  • Especializado em análise de layout de documentos e extração de texto.
  • Construído com a 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 para vários mecanismos de OCR, incluindo Tesseract e CuneiForm. Ele fornece uma interface simples para integração da funcionalidade OCR em aplicativos Python.

Principais recursos:

  • Pode interagir com vários mecanismos de OCR.
  • Fornece uma API simples para extração de texto.
  • Pode ser combinado com bibliotecas de pré-processamento de imagens para melhores resultados.

PyOCR requer Tesseract (mecanismo de 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 de 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

PaddleOCR é uma biblioteca de OCR desenvolvida por PaddlePaddle, uma estrutura de aprendizado profundo. Suporta mais de 80 idiomas e oferece precisão de ponta devido ao uso de modelos de aprendizagem profunda.

Principais recursos:

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

Para instalar o PaddleOCR no Linux, use:

pip3 install paddlepaddle paddleocr
OR
pip install paddlepaddle paddleocr

Aqui está um exemplo de 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

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

Principais recursos:

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

Para instalar o Kraken no Linux, use:

pip3 install kraken
OR
pip install kraken

Aqui está um exemplo de 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 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 a outros serviços da AWS.

Principais recursos:

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

Para instalar o Texttract no Linux, use:

pip3 install boto3
OR
pip install boto3

Aqui está um exemplo de script 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

A escolha da biblioteca OCR certa em Python depende do caso de uso específico, dos requisitos de linguagem e da complexidade dos documentos que você está processando. Esteja você 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 à sua 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.

Artigos relacionados: