Benötigt PDF OCR? Verwenden Sie PyMuPDF, um einen seitenweisen Preflight statt einer vollständigen Neuerkennung durchzuführen

Wenn Sie das PDF mit OCR versehen möchten, ist es nicht erforderlich, das gesamte PDF erneut zu erkennen. Ermitteln Sie mit PyMuPDF Seite für Seite, ob eine Textebene vorhanden ist und ob es sich um ein ganzseitiges Bild handelt, und versenden Sie nur die Seiten, die wirklich zur Erkennung benötigt werden. Im Anhang finden Sie ausführbare Beispiele, rotierende Seitentests und Anweisungen zur Verzweigungsgrenze.

Wenn viele Teams mit der PDF-Übersetzung oder -Archivierung zu tun haben, sind sie es gewohnt, das gesamte Dokument am Eingang als „gescannt"oder „kopierbar"zu kennzeichnen. Bei einer 300-seitigen PDF-Datei sind möglicherweise die ersten 280 Seiten mit Textebenen versehen und nur die letzten 20 Seiten sind gescannte Anhänge. Bei einer Klassifizierung nach ganzen Teilen erhöht die gesamte OCR die Wartezeit und kann auch zu einer falschen Identifizierung der ursprünglich korrekten Zahlen führen. Wenn Sie hingegen nur Text auf der Startseite kopieren und OCR auf allen Seiten überspringen können, ist dies ebenfalls riskant.

Ein zuverlässigerer Ansatz besteht darin, jede Seite mit den Ergebnissen des Preflights zum nächsten Schritt übergehen zu lassen. In diesem Artikel wird eine konservative Drei-Wege-Aufteilung implementiert: direkte Extraktion, Senden an die OCR-Kandidatenwarteschlange und manuelle Überprüfung. Es handelt sich um eine interpretierbare technische Heuristik und nicht um einen universellen Klassifikator zur Beurteilung der Textqualität. Nach der Lektüre erhalten Sie ein lauffähiges Seite-für-Seite-Preflight-Programm sowie Umleitungsgrenzen und allgemeine Ideen zur Fehlerbehandlung.

Fazit in einem Satz

Es besteht keine Notwendigkeit zu beurteilen, ob das PDF OCR erfordert. Verwenden Sie PyMuPDF, um Seite für Seite vorab zu prüfen und nur die Seiten an OCR zu senden, die wirklich erkannt werden müssen.

Ihre SituationEmpfohlene PraktikenGrund
Extrahieren Sie mindestens 40 Nicht-Leerzeichen aus einer einzelnen SeiteDirekte Extraktion (TEXT_CANDIDATE)Sie haben bereits genügend Zeichen, müssen aber noch stichprobenartig nach versteckten fehlerhaften OCR-Ebenen suchen
Weniger als 40 Wörter und ein einzelnes Bild, das mindestens 70 % der Seite einnimmtAn OCR-Kandidatenwarteschlange sendenZur Identifizierung eignen sich ganzseitige Scans, aber auch reine Fotos genügen.
Leere Seite, Vektortyp, spärlicher Titel oder komplexes RätselManuelle Inspektion (REVIEW)Diese Situationen können nicht zuverlässig in die ersten beiden Kategorien eingeteilt werden und können nicht automatisch übersprungen oder verworfen werden.
Ein 300-seitiges HybriddokumentSeite für Seite Preflight, keine vollständige VerarbeitungVermeiden Sie es, alle Seiten mit OCR zu versehen, weil nur wenige Anhänge gescannt wurden, oder die gesamte OCR zu überspringen, weil auf der Startseite Text vorhanden ist

Hinweis: Der Inhalt im Bild stammt aus der synthetisierten PDF-Datei, die durch den folgenden Code generiert wurde, nicht aus der Kundendatei oder der OmniDoc-Schnittstelle. Der Text auf der Bildseite besteht aus Rasterpixeln; Der Text auf der Textseite hat eine echte Textebene.

Entscheiden Sie, was Sie zuerst überprüfen möchten

Hier werden zwei Signale verwendet: die Anzahl der Textzeichen nach dem Entfernen von Leerzeichen und der Anteil des Seitenbereichs, der vom größten Bild auf der Seite eingenommen wird. Die erstere antwortet: „Wurden genügend Zeichen extrahiert?"Letzteres hilft dabei, zwischen einem Ganzseitenscan und einer leeren Seite zu unterscheiden. Der Bildbereich schneidet sich zunächst mit dem Zuschneiderahmen, um eine Überschreitung des Bildvergrößerungsverhältnisses auf der Seite zu vermeiden.

BeobachtungAblenkung dieses ArtikelsBrauche immer noch Aufmerksamkeit
Mindestens 40 Nicht-LeerzeichenTEXT_CANDIDATEDie versteckte schlechte OCR-Schicht kann auch viele Wörter enthalten
Weniger als 40 Wörter und mindestens 70 % Abdeckung eines einzelnen BildesOCR_CANDIDATEReine Fotos erfüllen ebenfalls die Anforderungen; OCR ist möglicherweise nicht aussagekräftig
Der Rest der SituationREVIEWLeere Flächen, Vektortexte, spärliche Titel und komplexe Rätsel können hier alle vorhanden sein

Schwellenwerte von 40 und 0,70 sollen diese Testreihe leichter auditierbar machen, nicht sprachübergreifende Standards. Chinesisch, Formeln, Umschläge und Kurzformen sollten separat gekennzeichnet werden. Hier wird das größte Bild nach Fläche aufgenommen, anstatt einfach die Flächen der überlappenden Bilder hinzuzufügen. Daher kann eine gescannte Seite, die aus mehreren Bildern besteht, im REVIEW landen. Dies ist eine bewusst bewahrte Grenze.

Vollständige lauffähige Probe

Das Sample verwendetPyMuPDF==1.28.0, ist nicht auf Tesseract angewiesen und ruft keine Online-OCR- oder Übersetzungsdienste auf. Speichere als example.py und führe es in einem leeren Verzeichnis aus. Der Dateiname, den sie erstellt, ist auf routing-fixture.pdf festgelegt. Für echte Projekte überschreiben Sie bitte nicht die Eingabedateien.

import json
import pymupdf

def inspect_page(page):
    chars = len("".join(page.get_text().split()))
    bounds = page.cropbox
    # 图片坐标与文本坐标都是未旋转坐标;不要混用旋转后的 page.rect。
    bounds = pymupdf.Rect(0, 0, bounds.width, bounds.height)
    ratios = []
    for image in page.get_image_info():
        rect = pymupdf.Rect(image["bbox"]) & bounds
        ratios.append(max(0, rect.get_area()) / bounds.get_area())
    largest = max(ratios, default=0.0)
    route = ("TEXT_CANDIDATE" if chars >= 40 else
             "OCR_CANDIDATE" if largest >= 0.70 else "REVIEW")
    return {"page": page.number + 1, "chars": chars,
            "largest_image_ratio": round(largest, 3), "route": route}

with pymupdf.open() as source:
    page = source.new_page(width=360, height=480)
    page.insert_text((28, 60), "Sample invoice 2026-09-26", fontsize=16)
    page.insert_text((28, 100), "Quantity 12   Unit price USD 15.00", fontsize=12)
    page.insert_text((28, 132), "Amount USD 180.00   Checked manually", fontsize=12)
    scan = page.get_pixmap(matrix=pymupdf.Matrix(2, 2)).tobytes("png")
    page = source.new_page(width=360, height=480)
    page.insert_image(page.rect, stream=scan)
    source.new_page(width=360, height=480)
    source.save("routing-fixture.pdf")

with pymupdf.open("routing-fixture.pdf") as pdf:
    result = [inspect_page(page) for page in pdf]
    assert [r["route"] for r in result] == [
        "TEXT_CANDIDATE", "OCR_CANDIDATE", "REVIEW"]
    assert result[1]["chars"] == 0
    assert result[1]["largest_image_ratio"] == 1.0
    pdf[1].set_rotation(90)
    assert inspect_page(pdf[1])["route"] == "OCR_CANDIDATE"
print(json.dumps(result, indent=2))

Beim Zugriff auf OCR cachen Sie TextPage, kein Erfolgsmarker

Die OCR-Schnittstelle von PyMuPDF ist page.get_textpage_ocr(...). Tesseract und die zugehörigen Sprachdaten müssen separat vorbereitet werden. Nach dem Erhalt einer TextPage sollte die anschließende Extraktion sie als textpage-Parameter weitergeben, um eine doppelte Erkennung auf derselben Seite zu vermeiden. Für spezifische Installationsmethoden und Parameter siehe bitte PyMuPDF OCR-Dokument.

Dieser Artikel verwendet keine OCR-Engine, daher beweisen die Testergebnisse lediglich, dass die Verteilungslogik und die Koordinatenverwendung korrekt sind und keine chinesische Erkennungsrate, Tabellenwiederherstellungsrate oder Übersetzungsqualität darstellen. In der Produktion sollten die OCR-Engine-Version, das Sprachpaket, die Seitenzahl, die Eingabedatei-Zusammenfassung und die manuellen Sampling-Ergebnisse aufgezeichnet werden. Behalte nicht nur die letzte Zeichenkette, sonst ist es schwer zu erkennen, von welcher Seite eine Nummer stammt.

Drei Arten von Fehlern, die am leichtesten übersehen werden

Versteckte Textebenen können verzerrter Text sein. Das Erreichen der Zeichenanzahl bedeutet nur: "Sie können weiterhin den Extraktionsversuch versuchen." Sie müssen außerdem prüfen, ob ersetzte Zeichen, doppelte Zeilen und Schlüsselfelder mit dem Rendering übereinstimmen. Wichtige Punkte wie Vertragsnummer und Betrag müssen zufällig überprüft werden.

Der vom Vektorpfad gezeichnete Text ist weder Text noch Bilder. Sie geben REVIEW ein. Markieren Sie Seiten nicht automatisch als leer und lassen Sie Seiten nicht stillschweigend fallen.

Die Verwendung der Seite nach dem Schließen des Dokuments führt zu einem ungültigen Objekt. Bitte behalten Sie den Umfang von with pymupdf.open(...) und veröffentlichen Sie die Datei erst nach Vorprüfen, Rendern und Extrahieren. Für weitere Details zu Koordinaten, Bildinformationen und Seitenlebenszyklen siehe PyMuPDF Page API.

Nicht vertrauenswürdige PDFs sollten außerdem Dateigröße, Seitenanzahl, Renderpixel, Zeit und Speichergrenzen in einem eigenständigen Prozess festlegen. Das Beispiel testet nur kleine Dateien und bietet keine Sandbox für bösartige Dateien. Bevor Sie PyMuPDF erstellen und verwenden, sollten Sie außerdem die Lizenzbedingungen und Ihre Vertriebsmethode überprüfen.

Übergang von Streams zum Übersetzungsworkflow

Eine qualifizierte Ausgabe ist keine Textfolge, sondern ein Datensatz mit Seitenzahlen und Entscheidungsgründen. Bestätigen Sie vor der Übersetzung, welche Seiten zuverlässig extrahiert werden können; Nach der Übersetzung werden Inhalt, Zahlen und Layout anschließend überprüft. Sie können Dokumentenbearbeitungsdienste auf OmniDoc-Produkteintrag ansehen. Das lokale Programm in diesem Artikel läuft unabhängig und basiert nicht auf einem OmniDoc-Konto, noch bedeutet das, dass es sich um einen internen Produktalgorithmus handelt.

📊 Kernvergleich

VerlaufAuslöserbedingungenGeeignete SeiteHauptrisiken
Direkte Extraktion (TEXT_CANDIDATE)Mindestens 40 nicht abstandsreiche ZeichenDie Body-Seite der bestehenden TextebeneVersteckte, schlechte OCR-Schichten können verzerrten Text enthalten
OCR-Kandidaten (OCR_CANDIDATE)Weniger als 40 Wörter, wobei ein einzelnes Bild mindestens 70 % abdeckt.Ganzseitige gescannte KopieReine Fotos erfüllen ebenfalls die Anforderungen, aber OCR-Ergebnisse sind möglicherweise nicht aussagekräftig
Manuelle Inspektion (REVIEW)Sie erfüllt nicht die oben genannten beiden KategorienLeere Seiten, Vektortext, spärliche Titel, komplexe RätselManuelles Urteil ist erforderlich; Überspringen oder Abwerfen kann nicht automatisch erfolgen

🎯 Welche Methode passt zu dir?

Wenn du ......

  • Behandelte gemischte Dokumente mit großen Qualitätsunterschieden zwischen Vorder- und Rückseite: Seite für Seite Vorabprüfung, wobei jede eine andere Route eingab.
  • Hauptsächlich mit Verträgen, Finanzdokumenten und anderen Dokumenten mit Schlüsselzahlen umgehend: Für Seite TEXT_CANDIDATE zufällig die Übereinstimmung zwischen Zahlen und Darstellungen überprüfen.
  • Batch-Verarbeitung von Scans: Aufzeichnungs-Engine-Versionen, Sprachpakete und Seitenzahlen für OCR-Ergebnisse zur einfachen Rückverfolgbarkeit.
  • Empfangen von PDFs aus unbekannten Quellen: Setzen Sie Ressourcenlimits in eigenständigen Prozessen; verarbeiten Sie sie nicht direkt im Hauptprozess.

❓ Häufig gestellte Fragen (FAQ)

1. Die Startseite kann Text kopieren; kann ich den OCR-Prozess für das gesamte PDF überspringen?

Nein, das kannst du nicht. Eine Textebene auf der ersten Seite bedeutet nicht, dass nachfolgende Seiten auch solche haben; Sie sollten Seite für Seite beurteilen.

2. Warum nicht einfach den Bildbereich direkt addieren?

Das Hinzufügen der sich überlappenden Bilder nach Gebiet überschätzt die Abdeckungsrate. Dieser Artikel enthält das größte Bild nach Fläche, sodass die gescannten Seiten, die aus mehreren Bildern zusammengesetzt sind, in den Abschnitt REVIEW fallen können, der eine bewusste Grenze darstellt.

3. Wenn die Zeichenanzahl 40 erreicht, bedeutet das, dass die Textqualität in Ordnung ist?

Es kann nicht so geschlossen werden. Versteckte, fehlerhafte OCR-Schichten können auch viele Zeichen haben, daher musst du trotzdem nach Ersatzzeichen, doppelten Zeilen und Spot-Key-Feldern suchen.

4. Wie sollte Text, der in Vektorpfaden gezeichnet wird, behandelt werden?

Sie sind weder Text noch Bilder, treten in BEWERTUNG ein und werden manuell bewertet; sie sollten nicht automatisch als leere oder stillschweigend verworfene Seiten markiert werden.

5. Ist das lokale Programm auf ein OmniDoc-Konto angewiesen?

Nicht abhängig. Das lokale Programm in diesem Artikel läuft unabhängig und ruft keine Online-OCR- oder Übersetzungsdienste an.

📝 Zusammenfassung

Erstens, lassen Sie Beweise Seite für Seite zurück, bevor Sie entscheiden, ob OCR durchgeführt werden soll. Unsichere Seiten in der Warteschlange zu lassen, ist effektiver, als unsichere Ergebnisse als Erfolg zu tarnen.

Erleben Sie jetzt: Laden Sie Ihr Dokument hoch, um mit der Übersetzung zu beginnen, wobei Sie die ursprüngliche Formatierung bewahren

Aktualisiert am 2026-11-15