Markieren Sie PDF-Suchwörter. Warum umrahmt das Rechteck den kursiven Text falsch?

Kursive Schriftarten machen die Fläche des gesuchten Quads nicht unbedingt kleiner als das umschließende Rechteck. Wenn Sie die Richtungsinformationen der vier Ecken beibehalten müssen, verwenden Sie direkt das Ergebnis von quads=True, um eine Hervorhebung hinzuzufügen. Verwenden Sie keinen Flächenunterschiedsschwellenwert, um zu bestimmen, ob die Hervorhebung korrekt ist.

Wenn das Suchhervorhebungsfeld für kursiven Text verzerrt ist, liegt das häufig nicht daran, dass ein Problem mit der Schriftart selbst vorliegt, sondern daran, dass das zur Hervorhebung verwendete geometrische Objekt falsch ausgewählt ist. Dieser Artikel richtet sich an Entwickler, die PyMuPDF zur Verarbeitung der PDF-Textpositionierung verwenden. Es erklärt, warum das umschließende Rechteck (Rect) nicht verwendet werden kann, um festzustellen, ob die Hervorhebung von kursivem oder gedrehtem Text korrekt ist, und wie man damit in verschiedenen Situationen umgeht.

Nachdem Sie diesen Artikel gelesen haben, können Sie entscheiden, ob Sie Quad oder Rect für Suchergebnisse verwenden möchten, wissen, wie Sie bei der Suche mit fehlenden Treffern, Kreuzzeilen, Mehrfachtreffern und CropBox-Zuschneiden umgehen und verstehen, welche Probleme über den Rahmen der geometrischen Positionierung hinausgehen.

Der vollständige Text wird mit synthetischen Beispielen demonstriert und der Code hat Beispielprüfungen in einer isolierten Umgebung bestanden. Dies stellt jedoch keine Garantie für alle echten Dateien oder Produkteffekte dar. Bevor Sie wichtige Dokumente bearbeiten, bewahren Sie bitte die Originale auf und überprüfen Sie sie dann anhand der unten aufgeführten Grenzen und Annahmepunkte.

Wählen Sie für die Suchhervorhebung von kursivem Text „Quad"oder „Rect"? Fazit in einem Satz

Durch die kursive Schriftart wird die durch die Suche ermittelte Quad-Fläche nicht zwangsläufig kleiner als das umschließende Rechteck. Wenn es erforderlich ist, die Richtungsinformationen der vier Ecken beizubehalten, verwenden Sie direkt die Ergebnisse vonquads=True, um Hervorhebungen hinzuzufügen. Verwenden Sie keinen Flächenunterschiedsschwellenwert, um zu bestimmen, ob die Hervorhebung korrekt ist.

Ihre SituationEmpfohlene PraktikenGrund
Bei kursivem oder gedrehtem Text muss die Vier-Ecken-Ausrichtung beibehalten werdenVerwenden Sie direkt die Ergebnisse von quads=True, um Highlights hinzuzufügenQuad behält die Informationen zur Ausrichtung der vier Ecken bei
Ich möchte den Flächenunterschiedsschwellenwert verwenden, um festzustellen, ob die Hervorhebung korrekt ist.Tu das nichtDie kursive Schriftart verkleinert den Quad-Bereich nicht unbedingt und die Schwellenwertbeurteilung ist unzuverlässig.
Die Suchbegriffe erstrecken sich über mehrere Zeilen und die Suchmaschine erkennt sie nicht als dieselbe Vokabulareinheit.Behalten Sie alle zurückgegebenen Quad-Fragmente und zeichnen Sie die Hervorhebungen einzelnDurch die gewaltsame Zusammenführung mit einem Rect geht die Semantik des Leerraums in der Mitte verloren.
Die Seite verfügt über CropBox-ZuschnittStellen Sie sicher, dass sich der Inhalt nach dem Wiederherstellen der CropBox noch im sichtbaren Bereich befindetDie von search_for zurückgegebenen Koordinaten basieren auf dem ungedrehten ursprünglichen Seitenbereich und es kann nicht davon ausgegangen werden, dass get_text den beschnittenen Bereich standardmäßig ignoriert
Mehrere TrefferBehalten Sie die Seitenzahlen Element für Element bei und verarbeiten Sie sie einzelnNur bei der Verarbeitung der ersten werden die verbleibenden Positionen übersehen

Warum wird kursiver Text falsch angezeigt?

Viele Leute gehen standardmäßig davon aus, dass das umschließende Rechteck kursiver Zeichen viel größer als das Quad ist, sodass die Verwendung von Rect zum Hervorheben zu einer „Rahmenabweichung"führt. Tatsächlich macht die kursive Schriftart die Fläche des gesuchten Quad nicht unbedingt kleiner als das umschließende Rechteck, daher ist es nicht zuverlässig, anhand der Flächendifferenz zu beurteilen, ob die Hervorhebung korrekt ist.

Was wirklich benötigt wird, ist, die Orientierungsinformationen der vier Ecken beizubehalten. Quad zeichnet diese Informationen zufällig auf, und ihre direkte Hinzufügung von Hervorhebungen ist zuverlässiger als die Verwendung eines umschließenden Rechtecks, um die Form zu erraten.

Beispiel für eine eigenständige Komposition

Beispiele für Abhängigkeiten finden Sie in der Importliste. Der Code erstellt Eingaben im Speicher und erfordert zur Ausführung keine externen Dateien. Betriebsaufzeichnungen werden separat zur Verfügung gestellt und stellen keine Garantie für die Echtheit aller Dokumente dar.

import pymupdf
with pymupdf.open() as source:
    page = source.new_page(width=300, height=300)
    page.insert_text((100, 250), "Searchable", fontsize=14, rotate=90)
    hits = page.search_for("Searchable", quads=True)
    assert len(hits) == 1
    assert isinstance(hits[0], pymupdf.Quad)
    page.add_highlight_annot(hits)
    assert page.search_for("Missing", quads=True) == []
    raw = source.tobytes()
with pymupdf.open(stream=raw, filetype="pdf") as doc:
    page = doc[0]  # Keep the owning page alive while using annotations.
    annotations = list(page.annots())
    assert len(annotations) == 1
    assert len(annotations[0].vertices) == 4

Korrekte Ausgabe- und Grenzeingabeverarbeitung

Das obige synthetische Beispiel generiert eine speicherinterne PDF-Datei, die zur Überprüfung des Quad-Verhaltens verwendet wird. Nachfolgend finden Sie einige gängige Grenzeingaben.

1. Suchwörter erstrecken sich über mehrere Zeilen

Wenn der Suchbegriff Zeilenumbrüche umfasst und die Suchmaschine ihn nicht als dieselbe Vokabulareinheit erkennt, gibt search_for möglicherweise eine leere Liste zurück oder stimmt nur mit Teilfragmenten überein.

  • Führen Sie nicht mehrere nicht benachbarte Quads gewaltsam zu einem Rect zusammen, da sonst die Semantik des Leerraums in der Mitte verloren geht.
  • Bewahren Sie alle zurückgegebenen Quad-Fragmente auf und zeichnen Sie die Hervorhebungen separat.

2. Der Suchbegriff enthält reguläre Sonderzeichen

Wenn ein Suchbegriff reguläre Sonderzeichen enthält, ohne diese zu maskieren, sind die Ergebnisse möglicherweise nicht wie erwartet. Die Eingabezeichenfolge sollte vor dem Aufruf sicher verarbeitet werden.

3. CropBox-Zuschneiden

Wenn die Seite über CropBox-Zuschnitt verfügt, basieren die von search_for zurückgegebenen Koordinaten immer noch auf dem nicht gedrehten ursprünglichen Seitenbereich. Nach dem Wiederherstellen der CropBox müssen Sie überprüfen, ob sich der Inhalt noch im sichtbaren Bereich befindet. Sie können nicht davon ausgehen, dass get_text den Zuschneidebereich standardmäßig ignoriert.

Akzeptanzkriterien und manuelle Überprüfungsgrenzen

Diese Lösung löst nur das geometrische Positionierungsproblem. In den folgenden Situationen kommt es nicht auf die Wahl zwischen Quad und Rect an:

  • Die Textebene der PDF selbst ist beschädigt;
  • Ungewöhnliche Schriftarteinbettung;
  • Es gibt versteckte Ebenen.

In diesen Fällen sind die Ergebnisse von search_for möglicherweise überhaupt nicht glaubwürdig und sollten einer manuellen Überprüfung oder einer erneuten OCR unterzogen werden. Der Beispielcode überprüft nur geometrische Eigenschaften und der End-to-End-Effekt muss noch anhand bestimmter Dokumenttypen bewertet werden.

Spezifische Entscheidungen zur Ausnahmebehandlung

beobachtenwas zu tunsollte nicht abgeleitet werden
Suche keine TrefferÜberprüfen Sie die Textebene und die SchlüsselwörterErstellen Sie keine leeren Highlights
Text drehenBehalten Sie Quad-Ecken beiSchätzgenauigkeit ohne Flächenunterschied
Mehrere TrefferBehalten Sie die Seitenzahlen Element für Element beiBefassen Sie sich nicht nur mit dem ersten

📊 Kernvergleich

ObjektInformationen, die aufbewahrt werden könnenAnwendbare SzenarienDinge zu beachten
QuadVier EckenKursivschrift und gedrehter Text erfordern eine präzise HervorhebungNutzen Sie die Ergebnisse von quads=True direkt
Rect (umschließendes Rechteck)AußenbereichEinfache Rahmenauswahl für horizontalen TextKursiv geschriebener oder gedrehter Text befindet sich möglicherweise außerhalb des Rahmens und eignet sich nicht zur Beurteilung der Korrektheit.
Zusammengeführtes RechteckGesamtumfangNicht für zeilenübergreifende Suchen empfohlenDie Semantik des Leerraums in der Mitte geht verloren

🎯 Welche Methode ist für Dich geeignet?

wenn du……

  • Die vier Eckrichtungen des Textes müssen erhalten bleiben: Verwenden Sie direkt die Ergebnisse von quads=True, um Hervorhebungen hinzuzufügen.
  • Wenn Sie den Flächenunterschiedsschwellenwert verwenden möchten, um festzustellen, ob die Hervorhebung korrekt ist: Tun Sie dies nicht. Die kursive Schriftart führt nicht unbedingt zu einer Verkleinerung des Quad-Bereichs.
  • Suchbegriff hat gekreuzte Linien gefunden: Behalten Sie alle Quad-Fragmente bei, zeichnen Sie die Hervorhebungen separat und führen Sie sie nicht zu einem Rect zusammen.
  • Handhabung von Seiten mit CropBox-Zuschnitt: Stellen Sie nach dem Wiederherstellen der CropBox sicher, dass sich der Inhalt noch im sichtbaren Bereich befindet.

Verwenden Sie diese Checkliste für die Dokumentenübersetzung

Überprüfen Sie zunächst die Seitenreihenfolge, den Quellort und die Textintegrität und senden Sie dann das gleiche desensibilisierte Beispiel an den Übersetzungsprozess. Nach der Übersetzung müssen Sie noch prüfen, ob Titel, Text und Abbildungen korrekt übereinstimmen. Sie können nicht einfach überprüfen, ob der Text glatt ist.

OmniDoc (Produktportal) bietet ein Multiformat-Dokumentübersetzungsportal und die offizielle Website führt OCR-, Glossar- und zweisprachige Vergleichsfunktionen ein. Für Teams, die direkt mit den Dateien arbeiten möchten, ist dies ein Weg, den es wert ist, mit realen Beispielen evaluiert zu werden. Bitte verwenden Sie desensibilisierte Dateien, für deren Hochladen Sie berechtigt sind, und verwenden Sie die Prüfpunkte in diesem Artikel, um die Ergebnisse zu überprüfen. Es besteht kein Anspruch darauf, dass OmniDoc die in diesem Artikel erwähnten Open-Source-Bibliotheken oder internen Algorithmen verwendet, und die Beispiele sind kein Ersatz für Produktleistungstests.

Referenzen

❓ Häufig gestellte Fragen (FAQ)

1. Wird kursiver Text den Quad-Bereich definitiv verkleinern?

unsicher. Durch die kursive Schriftart wird die Fläche des gesuchten Quad nicht unbedingt kleiner als das umschließende Rechteck, Sie können sich also nicht auf die Flächendifferenz verlassen, um festzustellen, ob die Hervorhebung korrekt ist.

2. Wann sollten Quad-Corner-Informationen beibehalten werden?

Wenn Sie die Richtungsinformationen der vier Ecken beibehalten müssen, sollten Sie die Ergebnisse von quads=True direkt verwenden, um Hervorhebungen hinzuzufügen.

3. Der Suchbegriff überschreitet die Grenzen und es werden keine Treffer gefunden. Was soll ich tun?

Erstellen Sie keine leeren Hervorhebungen, sondern überprüfen Sie zuerst die Textebene und die Schlüsselwörter. Wenn nur einige Fragmente zurückgegeben werden, sollten alle zurückgegebenen Quad-Fragmente beibehalten und die Hervorhebungen separat gezeichnet werden, anstatt in ein einziges Rect gezwungen zu werden.

4. Was ist beim Zuschneiden der Seite mit CropBox zu beachten?

Die von search_for zurückgegebenen Koordinaten basieren immer noch auf dem nicht gedrehten ursprünglichen Seitenbereich. Nach dem Wiederherstellen der CropBox müssen Sie überprüfen, ob sich der Inhalt noch im sichtbaren Bereich befindet. Sie können nicht davon ausgehen, dass get_text den Zuschneidebereich standardmäßig ignoriert.

📝 Zusammenfassung

Die Hervorhebung von kursivem und gedrehtem Text sollte auf Quad basieren, und Seitenzahlen und Vier-Ecken-Informationen sollten Element für Element beibehalten werden. Probleme wie Schäden an der Textebene und abnormale Schriftarteinbettungen erfordern immer noch eine manuelle Überprüfung oder eine erneute OCR.

Laden Sie OmniDoc Desktop kostenlos herunter: Dokumente, Tabellenkalkulationen, Präsentationen und PDFs an einem Ort

Aktualisiert am 2026-11-13