Posts tagged ‘PaddleOCR’

PDF-Texterkennung mit PaddleOCR und fitz (PyMuPDF)

Hier noch ein funktionierendes Beispiel, wie man PDF Dateien OCR-technisch auswerten kann. Im Gegensatz zu pdf2image besteht hier keine Abhängigkeit zu poppler.

import fitz
import numpy as np
from paddleocr import PaddleOCR
 
ocr = PaddleOCR(lang="de", enable_mkldnn=False)
 
doc = fitz.open("Widerspruch.pdf")
 
for page_number, page in enumerate(doc, start=1):
 
    # Render PDF page
    pix = page.get_pixmap(dpi=300)
 
    # Convert directly to NumPy
    image = np.frombuffer(
        pix.samples,
        dtype=np.uint8
    ).reshape(pix.height, pix.width, pix.n)
 
    # PaddleOCR expects RGB, not RGBA
    if pix.n == 4:
        image = image[:, :, :3]
 
    result = ocr.predict(image)
 
    print(f"\n--- Page {page_number} ---")
 
    for page_result in result:
        for text, score in zip(
            page_result["rec_texts"],
            page_result["rec_scores"],
        ):
            print(f"{score:.3f}: {text}")

PaddleOCR mit Python nutzen

PaddleOCR (Github) ist ein quelloffenes Framework für die Erkennung von Text (OCR). Hier ein kurzes Beispiel, wie man aus Python PaddleOCR nutzen kann.

# pip install paddlepaddle paddleocr
from paddleocr import PaddleOCR
 
# Initialize OCR
ocr = PaddleOCR(
    lang="de",          # "de" for German, "en" for English, etc.
    use_doc_orientation_classify=True,
    use_doc_unwarping=True,
    use_textline_orientation=True,
    enable_mkldnn=False  # prevents MKLDNN/PIR crash
)
 
# Perform OCR
result = ocr.predict("wident.png")
 
# Print results
with open('wident_paddle.txt','w') as o:
    for page in result:
        for line in page["rec_texts"]:
            print(line)
            o.writelines(line)