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/