Optical Character Recognition (OCR) is een technologie die leesbare tekst uit afbeeldingen, gescande documenten en zelfs handgeschreven notities haalt. In Python zijn OCR-tools aanzienlijk geëvolueerd in de loop der jaren, en met de nieuwste versie bieden deze bibliotheken nu zelfs krachtigere, efficiëntere oplossingen.
Deze tekst zal de top zeven OCR-bibliotheken in Python behandelen, waarbij hun sterke punten, unieke kenmerken en codevoorbeelden worden belicht om je op weg te helpen.
1. Tesseract OCR (pytesseract)
Tesseract is ongetwijfeld de meest populaire en veelgebruikte OCR-bibliotheek in het Python-ecosysteem. Oorspronkelijk ontwikkeld door HP en nu onderhouden door Google, biedt Tesseract hoogwaardige OCR-mogelijkheden voor meer dan 100 talen.
Belangrijkste kenmerken:
- Open-source en gratis te gebruiken.
- Ondersteunt meerdere talen, inclusief niet-Latijnse alfabetten.
- Herkent tekst in afbeeldingen, gescande documenten en PDF’s.
- Kan worden aangepast met aangepaste trainingsgegevens voor gespecialiseerde gebruiksgevallen.
- Werkt goed samen met voorbewerkingstools zoals OpenCV om de nauwkeurigheid te verbeteren.
Om Tesseract OCR te installeren op Linux, volg deze stappen afhankelijk van je distributie:
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]
Zodra Tesseract is geïnstalleerd, als je het wilt gebruiken met Python, moet je het pytesseract pakket installeren met behulp van de pip package manager.
pip3 install pytesseract OR pip install pytesseract
Hier is een voorbeeld van Python-code voor het gebruik van Tesseract OCR met de pytesseract
bibliotheek om tekst uit een afbeelding te extraheren.
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 is een andere uitstekende Python OCR-bibliotheek die meer dan 80 talen ondersteunt en eenvoudig is voor beginners. Het is gebouwd op diepgaande leertechnieken, waardoor het een uitstekende keuze is voor degenen die moderne OCR-technologie willen benutten.
Belangrijkste kenmerken:
- Hoge nauwkeurigheid met diepgaande leermiddelen.
- Ondersteunt een breed scala aan talen.
- Kan tekst detecteren in verticale en meertalige afbeeldingen.
- Eenvoudige en gemakkelijk te begrijpen API.
Om EasyOCR te installeren op Linux, kun je de volgende pip
opdracht gebruiken op basis van je distributie.
pip3 install easyocr OR pip install easyocr
Zodra de installatie is voltooid, kunt u EasyOCR gebruiken om tekst uit een afbeelding te extraheren.
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 is een open-source OCR-systeem ontwikkeld door Google. Hoewel het voornamelijk wordt gebruikt voor historische documenten en boeken, kan OCRopus ook worden toegepast op een breed scala van tekstextractietaken.
Belangrijkste functies:
- Gespecialiseerd in documentindelinganalyse en tekstextractie.
- Gebouwd met modulariteit in gedachten, waardoor eenvoudige aanpassing mogelijk is.
- Kan werken met multipagina-documenten en grote datasets.
Hier is een voorbeeld van Python-code om tekst uit een afbeelding te extraheren.
import subprocess # Use OCRopus to process an image subprocess.run(['ocropus', 'identify', 'image_sample.png'])
4. PyOCR
PyOCR is een Python-wrapper rond verschillende OCR-engines, waaronder Tesseract en CuneiForm. Het biedt een eenvoudige interface voor het integreren van OCR-functionaliteit in Python-toepassingen.
Belangrijkste functies:
- Kan communiceren met meerdere OCR-engines.
- Biedt een eenvoudige API voor tekstextractie.
- Kan worden gecombineerd met afbeeldingsvoorverwerkingsbibliotheken voor verbeterde resultaten.
PyOCR vereist Tesseract (OCR-engine) en Pillow (afbeeldingsverwerkingsbibliotheek). U kunt ze installeren met de volgende opdrachten:
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]
Nu kun je de pyocr
en pillow
bibliotheken installeren met behulp van pip
:
pip3 install pyocr pillow OR pip install pyocr pillow
Hier is een Python voorbeeld dat tekst uit een afbeelding haalt met behulp van PyOCR en 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 is een OCR-bibliotheek ontwikkeld door PaddlePaddle, een diepgaand leerkader. Het ondersteunt meer dan 80 talen en biedt een geavanceerde nauwkeurigheid dankzij het gebruik van diepgaande leermodellen.
Belangrijkste kenmerken:
- Hoge prestaties, vooral voor afbeeldingen met complexe achtergronden.
- Ondersteunt tekstdetectie, -herkenning en lay-outanalyse.
- Bevat vooraf getrainde modellen voor verschillende talen.
Om PaddleOCR te installeren in Linux, gebruik:
pip3 install paddlepaddle paddleocr OR pip install paddlepaddle paddleocr
Hier is een Python voorbeeld dat tekst uit een afbeelding haalt met behulp van de paddleocr bibliotheek:
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 is een hoogwaardige OCR-bibliotheek die speciaal is ontworpen voor historische en meertalige tekst. Het is gebouwd op basis van OCRopus en biedt extra functies voor complexe lay-outs en tekstextractie.
Belangrijkste kenmerken:
- Het meest geschikt voor oude boeken en meertalige OCR.
- Verwerkt complexe tekstlay-outs en historische lettertypen.
- Gebruikt machine learning voor een betere herkenningsnauwkeurigheid.
Om Kraken te installeren in Linux, gebruik:
pip3 install kraken OR pip install kraken
Hier is een Python-voorbeeld dat tekst uit een afbeelding haalt met behulp van de kraken-bibliotheek:
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 is de cloudgebaseerde OCR-service van Amazon die documenten en formulieren kan analyseren en tekst met hoge nauwkeurigheid kan extraheren. Het integreert naadloos met andere AWS-services.
Belangrijkste kenmerken:
- Cloudgebaseerde OCR met schaalbare oplossingen.
- Ondersteunt de analyse van documentstructuren, inclusief tabellen en formulieren.
- Integratie met AWS-services voor verdere gegevensverwerking.
Om Textract te installeren in Linux, gebruik:
pip3 install boto3 OR pip install boto3
Hier is een voorbeeld van een Python-script dat AWS Textract gebruikt om tekst uit een document te halen (bijvoorbeeld uit een gescande PDF- of afbeeldingsbestand).
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'])
Conclusie
Het kiezen van de juiste OCR-bibliotheek in Python hangt af van de specifieke toepassing, de taalvereisten en de complexiteit van de documenten die je verwerkt. Of je nu werkt aan historische documenten, meertalige teksten of eenvoudige gescande PDF’s, deze bibliotheken bieden krachtige tools voor tekstextractie.
Voor beginners zijn Tesseract en EasyOCR uitstekende startpunten vanwege hun gebruiksgemak en brede acceptatie. Voor meer geavanceerde of gespecialiseerde taken bieden bibliotheken zoals PaddleOCR, OCRopus en Kraken meer flexibiliteit en nauwkeurigheid.
Source:
https://www.tecmint.com/python-text-extraction-from-images/