Skip to content

Annotazione di PDF

Annota i PDF in Potato con il tipo di visualizzazione pdf, con evidenziazione di span, bounding box sulla pagina, collegamenti tra pagine e OCR per i file scansionati.

La visualizzazione pdf renderizza un PDF nel browser con PDF.js e colloca la superficie di annotazione sulla pagina renderizzata anziché su testo estratto in anticipo. Chi annota vede il documento reale, con colonne, tabelle, figure e interruzioni di pagina intatte, e lo etichetta sul posto. La visualizzazione richiede una sola chiave obbligatoria, il campo che contiene il percorso o l'URL del PDF, e tutto il resto è un'opzione di visualizzazione.

yaml
instance_display:
  fields:
    - key: pdf
      type: pdf
      label: "Document"
      display_options:
        view_mode: scroll
        max_height: 760
        zoom: page-width

view_mode accetta scroll, paginated o side-by-side. Lo scorrimento continuo impila tutte le pagine in un unico contenitore, il che conta quando un'annotazione deve attraversare un'interruzione di pagina. La vista paginata mostra una pagina alla volta con i controlli di navigazione e si adatta ai documenti lunghi, in cui si lavora pagina per pagina.

Tre modalità di annotazione

annotation_mode decide che cosa può disegnare chi annota, ed è l'opzione che cambia il compito stesso, non il suo aspetto. Il valore predefinito è span.

ModalitàChe cosa fa chi annotaAncorato a
spanSeleziona del testo e vi applica un'etichettaIl livello di testo di PDF.js
bounding_boxDisegna un riquadro in qualsiasi punto della paginaCoordinate di pagina
linkSegna le ancore, poi le collegaSpan di testo e regioni di pagina

La modalità span dipende dal fatto che il PDF porti con sé un livello di testo, cosa vera per qualsiasi PDF generato da un elaboratore di testi o da un sistema di composizione tipografica e falsa per una scansione. La modalità bounding box non ne dipende, quindi una pagina scansionata può comunque essere etichettata per regioni senza alcuna estrazione di testo.

Poiché la visualizzazione pdf ancora gli span attraverso il livello di testo di PDF.js e non attraverso il contenitore .text-content usato dalle altre visualizzazioni, non accetta il flag span_target. L'annotazione di span funziona lo stesso, tramite il livello di testo proprio del PDF.

Collegamenti tra pagine

La modalità link serve per relazioni che attraversano le pagine, come un'affermazione a pagina 2 che poggia su una figura a pagina 9. Chi annota segna prima le ancore, poi traccia collegamenti tipizzati tra di esse, e Potato registra ancore e collegamenti sotto nomi di schema distinti.

yaml
instance_display:
  fields:
    - key: pdf
      type: pdf
      label: "Document"
      display_options:
        annotation_mode: link
        view_mode: scroll
        enable_text_anchors: true
        enable_region_anchors: true
        anchor_schema: pdf_anchors
        link_schema: pdf_links
        anchor_labels:
          - name: claim
            color: "#dc2626"
          - name: figure
            color: "#2563eb"
        link_types:
          - name: refers_to
            directed: true
            color: "#dc2626"
            allowed_source_labels: [claim]
            allowed_target_labels: [figure]

allowed_source_labels e allowed_target_labels limitano quali ancore un tipo di collegamento può unire, ed è così che una linea guida diventa qualcosa che l'interfaccia impone invece di qualcosa che chi annota deve ricordare. Un collegamento refers_to configurato come sopra può partire solo da un claim e terminare solo su un figure, quindi un collegamento tracciato da una figura verso un'affermazione viene rifiutato. Imposta directed: false per una relazione simmetrica come same_as.

Le ancore sono di due tipi ed entrambi si possono disattivare in modo indipendente. enable_text_anchors consente di evidenziare uno span di testo, mentre enable_region_anchors consente di disegnare un riquadro di regione, che è ciò di cui hanno bisogno una figura o una tabella. Un esempio completo e commentato è disponibile a monte in examples/advanced/pdf-link-scroll/.

Documenti scansionati e OCR

ocr è disattivato per impostazione predefinita e Potato lo legge solo in modalità link. Quando è impostato, le parole vengono estratte lato server e usate per costruire un livello di testo lato client, così una scansione priva di testo incorporato può comunque portare ancore di testo. L'opzione accetta false, true o auto, e Potato rifiuta qualsiasi altro valore.

yaml
instance_display:
  fields:
    - key: pdf
      type: pdf
      display_options:
        annotation_mode: link
        ocr: auto
        ocr_dpi: 200
        ocr_lang: eng

Le tre impostazioni differiscono per il momento in cui viene eseguita la passata. false usa soltanto il livello di testo incorporato, true esegue sempre l'OCR e auto ricorre all'OCR solo quando il livello di testo incorporato torna vuoto. Su un corpus misto conviene auto, perché l'OCR è lento e richiede Tesseract installato. ocr_dpi controlla la risoluzione alla quale ogni pagina viene rasterizzata prima che l'OCR la legga, e alzarla costa tempo su ogni pagina. ocr_lang accetta un codice di lingua Tesseract e vale eng per impostazione predefinita.

Opzioni di visualizzazione

OpzionePredefinitoEffetto
view_modescrollscroll, paginated o side-by-side
max_height700Altezza del contenitore in pixel
max_widthnessunaLarghezza del contenitore
text_layertrueAbilita la selezione del testo
show_page_controlstrueControlli di navigazione tra le pagine
initial_page1Pagina mostrata per prima
zoomautoauto, page-fit, page-width o una percentuale
annotation_modespanspan, bounding_box o link
bbox_min_size10Riquadro più piccolo accettato, in pixel
bbox_colorsnessunoColori dei riquadri per etichetta
show_bbox_labelstrueDisegna le etichette sui riquadri
thumbnail_sidebartrueMiniature delle pagine nella vista paginata
enable_text_anchorstrueSpan di testo utilizzabili come ancore di collegamento
enable_region_anchorstrueRiquadri di regione utilizzabili come ancore di collegamento
anchor_schemapdf_anchorsSchema registrato sulle ancore
link_schemapdf_linksSchema registrato sui collegamenti
ocrfalsefalse, true o auto
ocr_dpi200Risoluzione di rendering per l'OCR
ocr_langengCodice di lingua Tesseract

File Word e Markdown

Un file DOCX o Markdown usa invece la visualizzazione document, che conserva la struttura di intestazioni e paragrafi del documento e accetta span_target. Legge annotation_mode con valore span o bounding_box, e show_outline costruisce un indice a partire dalle intestazioni nel corpo. Potato fa passare il markup renderizzato attraverso un elenco di elementi consentiti prima che raggiunga chi annota, quindi un campo del corpus che contiene un tag eseguibile viene rimosso anziché eseguito.

yaml
instance_display:
  fields:
    - key: report
      type: document
      label: "Report"
      display_options:
        show_outline: true
        max_height: 600

Approfondimenti