Evidenzia le parole di ricerca PDF, perché il rettangolo incornicia il testo in corsivo in modo errato?

I caratteri corsivi non rendono necessariamente l'area del Quad cercato più piccola del rettangolo che lo racchiude. Quando è necessario conservare le informazioni sulla direzione dei quattro angoli, utilizzare direttamente il risultato di quads=True per aggiungere l'evidenziazione; non utilizzare alcuna soglia di differenza di area per determinare se l'evidenziazione è corretta.

Quando la casella di evidenziazione della ricerca per il testo in corsivo è inclinata, spesso non è perché c'è un problema con il carattere stesso, ma perché l'oggetto geometrico utilizzato per l'evidenziazione è selezionato in modo errato. Questo articolo è destinato agli sviluppatori che utilizzano PyMuPDF per elaborare il posizionamento del testo PDF. Spiega perché il rettangolo di chiusura (Rect) non può essere utilizzato per determinare se l'evidenziazione del testo in corsivo o ruotato è corretta e come gestirla in diverse situazioni.

Dopo aver letto questo articolo, puoi decidere se utilizzare Quad o Rect per i risultati della ricerca, sapere come gestire nessun risultato, righe incrociate, risultati multipli e ritaglio CropBox durante la ricerca e capire quali problemi esulano dall'ambito del posizionamento geometrico.

Il testo completo viene dimostrato con campioni sintetici e il codice ha superato i controlli campione in un ambiente isolato, ma ciò non rappresenta una garanzia di tutti i file reali o degli effetti del prodotto. Prima di elaborare documenti importanti, conservare gli originali e quindi esaminarli in base ai limiti e agli elementi di accettazione riportati di seguito.

Per evidenziare il testo in corsivo nella ricerca, scegli Quad o Rect? Conclusione di una frase

Il carattere corsivo non rende necessariamente l'area Quad ottenuta dalla ricerca più piccola del rettangolo che la racchiude. Quando è necessario conservare le informazioni sulla direzione dei quattro angoli, utilizzare direttamente i risultati di quads=True per aggiungere evidenziazioni. Non utilizzare alcuna soglia di differenza di area per determinare se l'evidenziazione è corretta.

la tua situazionePratiche consigliatemotivo
Testo in corsivo o ruotato, l'orientamento dei quattro angoli deve essere preservatoUtilizza direttamente i risultati di quads=True per aggiungere evidenziazioniQuad conserva le informazioni sull'orientamento dei quattro angoli
Voglio utilizzare la soglia della differenza di area per determinare se l'evidenziazione è corretta.non farloIl carattere corsivo non riduce necessariamente l'area Quad e il giudizio sulla soglia non è affidabile.
I termini di ricerca si estendono su più righe e il motore non li riconosce come la stessa unità di vocabolario.Conserva tutti i frammenti Quad restituiti e disegna le evidenziazioni individualmenteL'unione forzata in un Rect perderà la semantica dello spazio bianco al centro.
La pagina ha il ritaglio CropBoxVerifica che il contenuto sia ancora all'interno dell'area visualizzabile dopo aver ripristinato CropBoxLe coordinate restituite da search_for si basano sullo spazio della pagina originale non ruotata e non si può presumere che get_text ignori l'area ritagliata per impostazione predefinita
Colpi multipliMantieni i numeri di pagina elemento per elemento ed elaborali uno per unoSolo elaborando il primo mancheranno le posizioni rimanenti

Perché il testo in corsivo viene visualizzato in modo errato?

Molte persone presumono per impostazione predefinita che il rettangolo che racchiude i caratteri corsivi sia molto più grande del Quad, quindi usare Rect per evidenziare causerà la "deviazione del frame". Infatti, il carattere corsivo non rende necessariamente l'area del Quad cercato più piccola del rettangolo che lo racchiude, quindi non è affidabile utilizzare la differenza di area per giudicare se l'evidenziazione è corretta.

Ciò che è veramente necessario è preservare le informazioni sull'orientamento dei quattro angoli. Quad sembra registrare queste informazioni e utilizzarlo per aggiungere direttamente le evidenziazioni è più affidabile rispetto all'utilizzo di un rettangolo che lo racchiude per indovinare la forma.

Esempio di composizione autonoma

Consulta l'elenco di importazione per esempi di dipendenze. Il codice crea l'input in memoria e non richiede l'esecuzione di file esterni. Le registrazioni delle operazioni vengono fornite separatamente e non rappresentano una garanzia che tutti i documenti siano autentici.

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

Corretta elaborazione dell'output e dell'input del confine

L'esempio sintetico sopra genera un PDF in memoria che viene utilizzato per verificare il comportamento del Quad. Di seguito sono riportati diversi input di confine comuni.

1. Le parole di ricerca si estendono su più righe

Se il termine di ricerca si estende su nuove righe e il motore non lo riconosce come la stessa unità di vocabolario, search_for potrebbe restituire un elenco vuoto o corrispondere solo a frammenti parziali.

  • Non unire forzatamente più Quad non adiacenti in un Rect, altrimenti la semantica dello spazio bianco al centro andrà persa.
  • Conserva tutti i frammenti Quad restituiti e disegna le evidenziazioni separatamente.

2. Il termine di ricerca contiene caratteri speciali regolari

Se un termine di ricerca contiene caratteri speciali regolari senza escape, i risultati potrebbero non essere quelli previsti. La stringa di input deve essere elaborata in modo sicuro prima della chiamata.

3. Ritaglio CropBox

Se la pagina ha il ritaglio CropBox, le coordinate restituite da search_for sono ancora basate sullo spazio della pagina originale non ruotata. Dopo aver ripristinato CropBox, è necessario verificare che il contenuto sia ancora all'interno dell'area visibile. Non si può presumere che get_text ignori l'area di ritaglio per impostazione predefinita.

Criteri di accettazione e limiti della revisione manuale

Questa soluzione risolve solo il problema del posizionamento geometrico. Le seguenti situazioni non richiedono la scelta tra Quad e Rect:

  • Il livello di testo del PDF stesso è danneggiato;
  • Incorporamento anomalo dei caratteri;
  • Ci sono livelli nascosti.

In questi casi, i risultati di search_for potrebbero non essere affatto credibili e dovrebbero essere sottoposti a revisione manuale o ri-OCR. Il codice di esempio verifica solo le proprietà geometriche e l'effetto end-to-end deve ancora essere valutato in base a tipi di documenti specifici.

Decisioni specifiche sulla gestione delle eccezioni

osservarecosa farenon dovrebbe essere dedotto
Non cercare risultatiControlla il livello di testo e le parole chiaveNon creare evidenziazioni vuote
Ruota il testoMantieni gli angoli QuadIndovinare la precisione senza differenza di area
Colpi multipliMantieni i numeri di pagina articolo per articoloNon occuparti solo del primo

📊 Confronto fondamentale

oggettoInformazioni che possono essere conservateScenari applicabiliCose da notare
QuadQuattro angoliIl corsivo, il testo ruotato, richiedono un'evidenziazione precisaUtilizza direttamente i risultati di quads=True
Rett (rettangolo circoscritto)portata esternaSelezione semplice della cornice per il testo orizzontaleIl testo in corsivo o ruotato potrebbe essere fuori riquadro e non è idoneo a giudicare la correttezza.
Rett. Unitoportata complessivaNon consigliato per ricerche su più lineeLa semantica dello spazio bianco al centro andrà persa

🎯Quale metodo è adatto a te?

se tu……

  • Le direzioni dei quattro angoli del testo devono essere preservate: utilizza direttamente i risultati di quads=True per aggiungere evidenziazioni.
  • Se desideri utilizzare la soglia della differenza di area per determinare se l'evidenziazione è corretta: non farlo. Il carattere corsivo non riduce necessariamente l'area Quad.
  • Termine di ricerca incontrato linee incrociate: conserva tutti i frammenti Quad, disegna le evidenziazioni separatamente, non unirle in un Rect.
  • Gestione delle pagine con ritaglio CropBox: dopo aver ripristinato CropBox, verifica che il contenuto sia ancora all'interno dell'area visualizzabile.

Utilizza questa lista di controllo per la traduzione dei documenti

Innanzitutto controlla l'ordine delle pagine, la posizione della fonte e l'integrità del testo, quindi invia lo stesso campione desensibilizzato al processo di traduzione. Dopo la traduzione, devi ancora verificare se titolo, testo e illustrazioni corrispondono correttamente. Non puoi semplicemente verificare se il testo è fluido.

OmniDoc (portale del prodotto) fornisce un portale di traduzione di documenti multiformato e il sito Web ufficiale introduce funzioni OCR, glossario e confronto bilingue. Per i team che desiderano lavorare direttamente dai file, questo è un percorso che vale la pena valutare con campioni reali. Utilizza file non sensibilizzati che sei autorizzato a caricare e utilizza gli elementi di controllo in questo articolo per esaminare i risultati. Non si afferma qui che OmniDoc utilizzi le librerie open source o gli algoritmi interni menzionati in questo articolo e gli esempi non sostituiscono i test sulle prestazioni del prodotto.

Riferimenti

❓ Domande frequenti (FAQ)

1. Il testo in corsivo rimpicciolirà definitivamente l'area Quad?

incerto. Il carattere corsivo non rende necessariamente l'area del Quad cercato più piccola del rettangolo che lo racchiude, quindi non è possibile fare affidamento sulla differenza di area per determinare se l'evidenziazione è corretta.

2. Quando devono essere conservate le informazioni sugli angoli del Quad?

Quando è necessario conservare le informazioni sulla direzione dei quattro angoli, è necessario utilizzare direttamente i risultati di quads=True per aggiungere evidenziazioni.

3. Il termine di ricerca attraversa le righe e non viene trovato alcun risultato. Cosa dovrei fare?

Non creare evidenziazioni vuote, controlla prima il livello di testo e le parole chiave. Se vengono restituiti solo alcuni frammenti, tutti i frammenti Quad restituiti dovrebbero essere conservati e le evidenziazioni disegnate separatamente, anziché essere forzate in un singolo Rect.

4. A cosa dovresti prestare attenzione quando ritagli la pagina con CropBox?

Le coordinate restituite da search_for sono ancora basate sullo spazio della pagina originale non ruotata. Dopo aver ripristinato CropBox, è necessario verificare che il contenuto sia ancora all'interno dell'area visibile. Non si può presumere che get_text ignori l'area di ritaglio per impostazione predefinita.

📝 Riepilogo

L'evidenziazione del testo in corsivo e ruotato dovrebbe essere basata su Quad e i numeri di pagina e le informazioni sui quattro angoli dovrebbero essere conservati elemento per elemento. Problemi come danni al livello del testo e incorporamento anomalo di caratteri richiedono ancora una revisione manuale o una nuova OCR.

Scarica OmniDoc Desktop gratuitamente: documenti, fogli di calcolo, presentazioni e PDF tutto in un unico posto

Aggiornato il 2026-11-13