Zvýrazněte hledaná slova PDF, proč obdélník rámuje text kurzívou nesprávně?

Kurzíva nemusí nutně zmenšit oblast hledaného čtyřúhelníku než obklopující obdélník. Pokud potřebujete zachovat informace o směru ve čtyřech rozích, použijte přímo výsledek quads=True pro přidání zvýraznění; nepoužívejte žádný práh rozdílu plochy k určení, zda je zvýraznění správné.

Když je pole pro zvýraznění hledání pro text kurzívou zkosené, často to není proto, že by byl problém s písmem samotným, ale proto, že geometrický objekt použitý pro zvýraznění je špatně vybrán. Tento článek je určen pro vývojáře, kteří používají PyMuPDF ke zpracování umístění textu PDF. Vysvětluje, proč nelze pomocí ohraničujícího obdélníku (Obdélník) určit, zda je zvýraznění kurzívy nebo otočeného textu správné, a jak s ním zacházet v různých situacích.

Po přečtení tohoto článku se můžete rozhodnout, zda budete pro výsledky vyhledávání používat Quad nebo Rect, budete vědět, jak při vyhledávání zacházet bez zásahů, křížení řádků, vícenásobných zásahů a oříznutí CropBox, a pochopit, které problémy jsou mimo rámec geometrického umístění.

Úplný text je demonstrován na syntetických vzorcích a kód prošel vzorovými kontrolami v izolovaném prostředí, ale to nepředstavuje záruku všech skutečných souborů nebo efektů produktu. Před zpracováním důležitých dokumentů si prosím uschovejte originály a poté je zkontrolujte podle níže uvedených hranic a položek přijetí.

Pro zvýraznění textu kurzívou při hledání zvolte Čtyřúhelník nebo Obdélník? Závěr jednou větou

Kurzíva nemusí nutně zmenšit oblast Quad získanou vyhledáváním než ohraničující obdélník. Pokud je nutné zachovat informace o směru ve čtyřech rozích, použijte přímo výsledky quads=True k přidání zvýraznění. K určení, zda je zvýraznění správné, nepoužívejte žádný práh rozdílu plochy.

vaší situaciDoporučené postupydůvod
Kurzíva nebo otočený text, orientaci čtyř rohů je třeba zachovatPřímo použijte výsledky quads=True k přidání zvýrazněníQuad uchovává informace o orientaci ve čtyřech rozích
Chci použít práh rozdílu plochy k určení, zda je zvýraznění správné.nedělej toKurzíva nutně nezmenšuje oblast Quad a posouzení prahu je nespolehlivé.
Hledané výrazy se rozkládají přes řádky a motor je nerozpozná jako stejnou jednotku slovní zásoby.Ponechte si všechny vrácené fragmenty Quad a nakreslete světla jednotlivěNásilné sloučení do obdélníku ztratí sémantiku bílého místa uprostřed.
Stránka má oříznutí CropBoxOvěřte, že se obsah po obnovení CropBoxu stále nachází v viditelné oblastiSouřadnice vrácené search_for jsou založeny na neotočeném původním prostoru stránky a nelze je předpokládat, že get_text ve výchozím nastavení ignoruje oříznutou oblast
Více zásahůUdržujte čísla stránek položku po položce a zpracujte je jednu po druhéPouze zpracování prvního z nich vynechá zbývající pozice

Proč se kurzíva zobrazuje nesprávně?

Mnoho lidí bude ve výchozím nastavení předpokládat, že ohraničující obdélník s kurzívou je mnohem větší než čtyřúhelník, takže použití obdélníku ke zvýraznění způsobí „odchylku rámce". Kurzíva ve skutečnosti nutně nezmenšuje oblast hledaného čtyřúhelníku než obklopující obdélník, takže není spolehlivé použít rozdíl plochy k posouzení, zda je zvýraznění správné.

Co je skutečně potřeba, je zachovat orientační informaci čtyř rohů. Quad náhodou zaznamená tyto informace a jeho použití k přímému přidání zvýraznění je spolehlivější než použití ohraničujícího obdélníku k uhodnutí tvaru.

Příklad samostatné kompozice

Podívejte se na seznam importů například závislosti. Kód vytváří vstup v paměti a ke spuštění nevyžaduje externí soubory. Provozní záznamy jsou poskytovány samostatně a nepředstavují záruku, že všechny dokumenty jsou autentické.

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

Správné zpracování výstupu a vstupu hranice

Výše uvedený syntetický příklad generuje soubor PDF v paměti, který se používá k ověření chování Quad. Níže je několik běžných hraničních vstupů.

1. Hledaná slova se pohybují napříč řádky

Pokud hledaný výraz zabírá nové řádky a motor jej nerozpozná jako stejnou jednotku slovníku, search_for může vrátit prázdný seznam nebo se shodovat pouze s částečnými fragmenty.

  • Neslučujte násilně více nesousedících Quad do jednoho Rectu, jinak se ztratí sémantika bílého místa uprostřed.
  • Uchovávejte všechny vrácené fragmenty Quad a nakreslete zvýraznění odděleně.

2. Hledaný výraz obsahuje běžné speciální znaky

Pokud hledaný výraz obsahuje běžné speciální znaky, aniž by je escapoval, výsledky nemusí být očekávané. Vstupní řetězec by měl být před voláním bezpečně zpracován.

3. Oříznutí CropBoxu

Pokud má stránka oříznutí CropBox, souřadnice vrácené search_for jsou stále založeny na neotočeném původním prostoru stránky. Po obnovení CropBoxu musíte ověřit, zda je obsah stále ve viditelné oblasti. Nemůžete předpokládat, že get_text ve výchozím nastavení ignoruje oblast oříznutí.

Kritéria přijetí a hranice manuální kontroly

Toto řešení řeší pouze problém geometrického umístění. Následující situace nejsou věcí výběru mezi Quad a Rect:

  • Textová vrstva samotného PDF je poškozená;
  • Abnormální vkládání písma;
  • Existují skryté vrstvy.

V těchto případech nemusí být výsledky search_for vůbec důvěryhodné a měly by být předloženy k ruční kontrole nebo opětovnému OCR. Ukázkový kód pouze ověřuje geometrické vlastnosti a efekt end-to-end je stále třeba vyhodnotit na základě konkrétních typů dokumentů.

Specifická rozhodnutí o zpracování výjimek

pozorovatco dělatby nemělo být vyvozováno
Hledat žádné hityZkontrolujte textovou vrstvu a klíčová slovaNevytvářejte prázdné zvýraznění
Otočit textUdržujte čtyři rohyOdhad přesnosti bez rozdílu plochy
Více zásahůUdržujte čísla stránek položku po položceNeřešte jen to první

📊 Srovnání jádra

objektInformace, které lze uchovatPoužitelné scénářeVěci k poznámce
QuadČtyři rohyKurzíva, otočený text, vyžadují přesné zvýrazněníPoužijte přímo výsledky quads=True
Obdélník (obdélník kolem)vnější rozsahJednoduchý výběr rámečku pro vodorovný textText psaný kurzívou nebo otočený může být mimo rámeček a není vhodný pro posouzení správnosti.
Sloučené Rectcelkový rozsahNedoporučuje se pro křížové vyhledáváníSémantika bílého místa uprostřed se ztratí

🎯 Která metoda je pro vás vhodná?

pokud jste……

  • Směry čtyř rohů textu musí být zachovány: přímo použijte výsledky quads=True pro přidání zvýraznění.
  • Pokud chcete použít práh rozdílu plochy k určení, zda je zvýraznění správné: Nedělejte to. Kurzíva nemusí nutně zmenšit oblast Quad.
  • Nalezené překřížené čáry hledaného výrazu: Ponechat všechny fragmenty Quad, zvýraznění kreslit samostatně, neslučovat do jednoho obdélníku.
  • Zacházení se stránkami s oříznutím CropBox: Po obnovení CropBoxu ověřte, zda je obsah stále v viditelné oblasti.

Tento kontrolní seznam použijte pro překlad dokumentů

Nejprve zkontrolujte pořadí stránek, umístění zdroje a integritu textu a poté odešlete stejný znecitlivěný vzorek do procesu překladu. Po překladu je ještě potřeba zkontrolovat, zda název, text a ilustrace správně odpovídají. Nemůžete jen zkontrolovat, zda je text hladký.

OmniDoc (produktový portál) poskytuje portál pro překlad dokumentů ve více formátech a oficiální webové stránky zavádějí funkce OCR, glosář a dvojjazyčné porovnání. Pro týmy, které chtějí pracovat přímo ze souborů, je to cesta, kterou stojí za to vyhodnotit pomocí reálných vzorků. Použijte prosím znecitlivěné soubory, k jejichž nahrávání máte oprávnění, a ke kontrole výsledků použijte zaškrtávací položky v tomto článku. Není zde žádné tvrzení, že OmniDoc používá open source knihovny nebo interní algoritmy uvedené v tomto článku a příklady nenahrazují testování výkonu produktu.

Reference

❓ Často kladené otázky (FAQ)

1. Zmenší text kurzívou oblast Quad?

nejistý. Kurzíva nemusí nutně zmenšovat oblast hledaného čtyřúhelníku než obklopující obdélník, takže se nemůžete spolehnout na rozdíl v ploše, abyste určili, zda je zvýraznění správné.

2. Kdy by měly být uchovány informace o čtyřech rozích?

Pokud potřebujete zachovat informace o směru ve čtyřech rozích, měli byste přímo použít výsledky quads=True k přidání zvýraznění.

3. Hledaný výraz překračuje čáry a nebyly nalezeny žádné shody. co mám dělat?

Nevytvářejte prázdné zvýraznění, nejprve zkontrolujte textovou vrstvu a klíčová slova. Pokud jsou vráceny pouze některé fragmenty, všechny vrácené fragmenty Quad by měly být zachovány a zvýraznění by měla být vykreslena samostatně, spíše než aby byly nuceny do jednoho obdélníku.

4. Na co si dát pozor při ořezávání stránky pomocí CropBoxu?

Souřadnice vrácené search_for jsou stále založeny na neotočeném původním prostoru stránky. Po obnovení CropBoxu musíte ověřit, zda je obsah stále ve viditelné oblasti. Nemůžete předpokládat, že get_text ve výchozím nastavení ignoruje oblast oříznutí.

📝 Shrnutí

Zvýraznění kurzívy a otočeného textu by mělo být založeno na Quad a čísla stránek a informace o čtyřech rozích by měly být zachovány po položkách. Problémy, jako je poškození textové vrstvy a abnormální vkládání písem, stále vyžadují ruční kontrolu nebo opětovné OCR.

Stáhněte si OmniDoc Desktop zdarma: dokumenty, tabulky, prezentace a soubory PDF na jednom místě

Aktualizováno 2026-11-13