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.