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/