Il PDF può essere visualizzato ma non copiato, potrebbe non essere una scansione: controlla prima il livello del testo e la mappatura dei caratteri

Se non è presente testo, non può essere giudicato direttamente come "il livello del testo è normale", né può essere giudicato direttamente come una copia scansionata. Il testo, i caratteri alternativi e i riferimenti alle immagini della pagina vengono registrati rispettivamente di seguito e viene emesso lo stato da rivedere; i riferimenti alle immagini non dimostrano che l'immagine abbia coperto l'intera pagina o che il testo sia identificabile.

Se riesci a vedere il testo nel PDF ma non riesci a copiarlo, potrebbe non trattarsi di una copia digitalizzata oppure potrebbe esserci un problema con la mappatura dei caratteri. Questo articolo è scritto per sviluppatori ed elaboratori di documenti che necessitano di estrarre, tradurre o strutturare il contenuto PDF. Dopo la lettura, saprai innanzitutto come distinguere i problemi a livello di testo e il contenuto delle immagini e utilizzare segnali unificati per determinare cosa fare dopo.

Il codice e gli esempi qui riportati utilizzano campioni sintetici che hanno superato controlli a campione in un ambiente isolato e non rappresentano una garanzia di tutti i file reali o delle prestazioni del prodotto. Prima di elaborare documenti importanti, conservare gli originali e rivederli rispettando i limiti e gli elementi di accettazione nel testo.

Il PDF può essere visualizzato ma non copiato. È una copia scannerizzata? Conclusione di una frase

Non posso giudicare direttamente. Controlla prima il livello del testo e la mappatura dei caratteri, poi guarda l'immagine della pagina e infine determina se si tratta di una scansione o di un errore di mappatura.

la tua situazionePratiche consigliatemotivo
Può vedere il testo, copiare caratteri confusi o spazi vuotiControlla la mappatura ToUnicode e la codifica dei caratteriLa grafica è normale ma il livello del testo è rotto, principalmente a causa di una mappatura mancante o errata.
I caratteri copiati sembrano ragionevoli ma hanno una semantica errataConfronta i risultati dell'estrazione con il contenuto visivoLa mappatura euristica potrebbe restituire caratteri errati e superare il controllo non nullo
Non c'è testo, ma ci sono immagini sulla paginaControlla se l'immagine contiene testo e quindi determina se è richiesto l'OCRLe citazioni di immagini non equivalgono a scansioni dell'intera pagina, né dimostrano che il testo sia leggibile
Né il testo né le immagini vengono estrattiVisualizza il contenuto del disegno della paginaNon c'è modo di concludere che la pagina sia vuota

Perché il codice copiato è confuso?

Gli utenti possono visualizzare il testo normalmente nel browser o nel lettore, ma il testo copiato è confuso, vuoto o con simboli irrilevanti. Di solito non si tratta di un file danneggiato, né necessariamente di una copia digitalizzata. La causa principale è che il glifo (Glyph) nella tabella di mappatura Unicode (ToUnicode CMap) all'interno del PDF è mancante o errato.

I motori di rendering si affidano agli indici dei glifi per disegnare contenuto visivo, mentre gli appunti e gli strumenti di estrazione del testo si affidano alla mappatura delle tabelle per ripristinare i caratteri semantici. Quando i due vengono interrotti, viene visualizzato uno strato di testo errato "visivamente normale, illeggibile dalla macchina".

Prima di eseguire la traduzione del documento o l'estrazione strutturata, è necessario verificare se il problema risiede nella mappatura o se la pagina stessa è un'immagine. In caso contrario, i successivi processi OCR o NLP si baseranno su premesse errate.

Meccanismo di interruzione tra l'indice dei glifi e la mappatura Unicode

La specifica PDF consente ai font di incorporare solo informazioni sul contorno e sulla larghezza dei glifi, ma non sulla mappatura della codifica dei caratteri. Le seguenti condizioni possono causare rotture:

  • Il software che genera PDF non scrive correttamente la tabella ToUnicode
  • Viene utilizzata la codifica personalizzata ma non vengono fornite regole di decodifica

In questo momento l'estrattore può ottenere solo il glifo ID originale (CID). Questi ID sono significativi per il renderer ma non hanno alcun valore per l'elaborazione del testo.

Alcuni strumenti utilizzano l'euristica per indovinare la mappatura e il risultato potrebbe essere caratteri che sembrano ragionevoli ma in realtà sono sbagliati, come la conversione della punteggiatura cinese in lettere latine o la sostituzione dei numeri con caratteri di controllo. Questo tipo di "testo fittizio" è più sottile dello spazio bianco puro perché può superare il controllo non nullo, ma causerà un inquinamento silenzioso dei dati nei collegamenti downstream.

La chiave per giudicare tali problemi non è vedere se il testo può essere selezionato, ma verificare se la stringa estratta è semanticamente coerente con il contenuto visivo.

Utilizza PyMuPDF per la diagnostica della sintesi della memoria

Il codice seguente costruisce l'input in memoria e verifica la logica diagnostica:

from io import BytesIO
from PIL import Image
import pymupdf
def inspect(page):
    text = page.get_text().strip()
    images = page.get_images()
    if "\ufffd" in text:
        state = "review_replacement_characters"
    elif text:
        state = "text_present_needs_semantic_review"
    elif images:
        state = "image_without_extracted_text"
    else:
        state = "empty_text_needs_review"
    return {"state": state, "characters": len(text), "image_refs": len(images)}
with pymupdf.open() as doc:
    doc.new_page().insert_text((50, 50), "Text sample")
    doc.new_page()
    picture = BytesIO()
    Image.new("RGB", (16, 16), "red").save(picture, format="PNG")
    doc.new_page().insert_image(pymupdf.Rect(10, 10, 100, 100), stream=picture.getvalue())
    assert inspect(doc[0])["state"] == "text_present_needs_semantic_review"
    assert inspect(doc[1])["state"] == "empty_text_needs_review"
    assert inspect(doc[2])["state"] == "image_without_extracted_text"
    assert inspect(doc[2])["characters"] == 0

Nel codice precedente, la funzione diagnose_text_layer ottiene il testo originale tramite get_text("text"), utilizza unicodedata.category per filtrare i caratteri di controllo e gli spazi bianchi e calcola la proporzione del contenuto effettivo. Allo stesso tempo, rileva la presenza di blocchi di immagini tramite get_text("blocks").

Le due asserzioni verificano due casi: un documento normale con un tasso di stampabilità superiore a 0,9 e un documento scansionato con un conteggio dei caratteri pari a zero. Questo copre la logica di ramificazione principale.

È importante notare che questa diagnosi si basa esclusivamente su caratteristiche statistiche. Per i caratteri crittografati o le codifiche speciali, è comunque necessaria la revisione manuale.

📊 Confronto fondamentale

La tabella seguente elenca le direzioni di ispezione corrispondenti ai diversi segnali e le conclusioni da non trarre:

SegnaleIl passo successivo è controllareConclusioni che non dovrebbero essere truncate
C'è testo stampabileControlla semantica, ordine e fontiSe riesci a estrarlo, significa che è corretto
Ci sono personaggi alternativiCodifica per revisioni e mappatura dei fontTutti i personaggi sono andati perduti
Ci sono foto ma nessun testoControlla se l'immagine contiene testoDeve essere una scansione a pagina intera
Non sono stati rilevati né testo né immaginiVisualizza i disegni della paginaDeve essere una pagina bianca

🎯 Quale metodo ti si addice?

Se riesci a vedere il testo ma non puoi copiarlo

Dai priorità al controllo delle mappe ToUnicode e delle codifiche dei font, che di solito sono causate da interruzioni della mappa.

Se il testo copiato appare normale ma contiene errori,

Usa contenuti visivi per confrontare ed estrarre i risultati paragrafo per paragrafo; non limitarti a vedere se non sono nulli.

Se la pagina ha solo immagini e nessun testo

Controlla se l'immagine contiene testo, poi decidi se è necessario l'OCR. Non dare per scontato che l'intera pagina sia una scansione.

Se ti stai preparando a tradurre documenti

Prima completano il controllo dell'integrità del testo, poi consegna il campione desensibilizzato al processo di traduzione.

Usa questa checklist per la traduzione dei documenti

Per prima cosa, controlla attentamente l'ordine delle pagine, la posizione della fonte e l'integrità del testo, poi invia lo stesso esempio di desensibilizzazione al processo di traduzione. Dopo la traduzione, è comunque necessario verificare se il titolo, il testo principale e le didascalie corrispondano correttamente; non basta giudicare solo dalla fluidità del testo.

OmniDoc (Voce prodotto) offre un portale di traduzione documentale multi-formato, con il sito ufficiale che introduce OCR, glossari e funzionalità di riferimento bilingue. Se vuoi partire direttamente dal file, puoi valutare questo percorso con campioni reali.

Si prega di utilizzare il file ansioso che ha il diritto di caricare e verificare i risultati della checklist in questo articolo. Questo non sostiene che OmniDoc utilizzi le librerie open source o gli algoritmi interni menzionati in questo articolo, né sostituisce i test delle prestazioni del prodotto con esempi.

❓ Domande Frequenti (FAQ)

1. Se puoi estrarre testo, significa che il livello di testo è corretto?

No. Il contenuto estratto deve anche essere controllato per semantica, ordine e sorgente, e se la mappatura è errata, potrebbe produrre caratteri apparentemente ragionevoli.

2. Se ci sono immagini sulla pagina, significa che si tratta di una scansione?

Non necessariamente. I riferimenti alle immagini non dimostrano che l'immagine copra l'intera pagina, né che il testo possa essere riconosciuto; è necessario verificare se l'immagine contiene testo.

3. Se né testo né immagini vengono rilevati, significa che la pagina è vuota?

Non si può trarre alcuna conclusione su questo aspetto. Dovresti controllare la renderizzazione della pagina prima di prendere un giudizio.

4. Questo script diagnostico può essere usato per tutti i PDF?

No. Si basa esclusivamente su caratteristiche statistiche; i font criptati o le codifica speciali richiedono ancora una verifica manuale.

📝 Riassunto

I PDF possono essere letti ma non copiati; prima controlla i livelli di testo e le mappature dei caratteri, poi guarda il contenuto dell'immagine e infine determina se si tratta di una copia scansionata. Prima di elaborare, conserva i documenti originali e rivedi ogni elemento con gli elementi di ispezione.

Esperienza ora: carica il tuo documento per iniziare a tradurre, mantenendo la formattazione originale

Ulteriori letture

-Spiegazione dettagliata dell'estrazione del testo PyMuPDF -Homepage ufficiale del documento PyMuPDF

Aggiornato il 2026-11-14