Anotação de PDF
Anote PDFs no Potato com o tipo de exibição pdf, com destaque de spans, caixas delimitadoras sobre a página, ligações entre páginas e OCR para arquivos digitalizados.
A exibição pdf renderiza um PDF no navegador com o PDF.js e coloca a superfície de anotação sobre a página renderizada, e não sobre texto extraído de antemão. Quem anota vê o documento real, com suas colunas, tabelas, figuras e quebras de página intactas, e o rotula ali mesmo. A exibição exige uma única chave, o campo que contém o caminho ou a URL do PDF, e todo o resto é opção de exibição.
instance_display:
fields:
- key: pdf
type: pdf
label: "Document"
display_options:
view_mode: scroll
max_height: 760
zoom: page-widthview_mode aceita scroll, paginated ou side-by-side. A rolagem contínua empilha todas as páginas em um só contêiner, o que importa quando uma anotação precisa atravessar uma quebra de página. A visualização paginada mostra uma página por vez com controles de navegação e serve para documentos longos, em que se trabalha página a página.
Três modos de anotação
annotation_mode decide o que quem anota pode desenhar, e é a opção que muda a tarefa em si, não a aparência dela. O padrão é span.
| Modo | O que quem anota faz | Ancorado em |
|---|---|---|
span | Seleciona texto e aplica um rótulo | A camada de texto do PDF.js |
bounding_box | Desenha uma caixa em qualquer ponto da página | Coordenadas da página |
link | Marca âncoras e depois as conecta | Spans de texto e regiões da página |
O modo span depende de o PDF trazer uma camada de texto, o que vale para qualquer PDF gerado por um processador de texto ou um sistema de composição tipográfica e não vale para uma digitalização. O modo de caixa delimitadora não depende dela, então uma página digitalizada ainda pode ser rotulada por região sem nenhuma extração de texto.
Como a exibição pdf ancora spans pela camada de texto do PDF.js e não pelo invólucro .text-content que as outras exibições usam, ela não aceita a flag span_target. A anotação de spans continua funcionando, pela camada de texto do próprio PDF.
Ligações entre páginas
O modo de ligação serve para relações que atravessam páginas, como uma afirmação na página 2 que se apoia em uma figura na página 9. Quem anota marca primeiro as âncoras e depois traça ligações tipadas entre elas, e o Potato registra as âncoras e as ligações sob nomes de esquema separados.
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 restringem quais âncoras um tipo de ligação pode unir, e é assim que uma diretriz passa a ser algo imposto pela interface em vez de algo que quem anota precisa lembrar. Uma ligação refers_to configurada como acima só pode começar em um claim e só pode terminar em um figure, portanto uma ligação traçada de uma figura de volta a uma afirmação é recusada. Defina directed: false para uma relação simétrica como same_as.
Há dois tipos de âncora e ambos podem ser desligados de forma independente. enable_text_anchors permite destacar um span de texto e enable_region_anchors permite desenhar uma caixa de região, que é o que uma figura ou uma tabela exige. Um exemplo completo e trabalhado vem no repositório de origem em examples/advanced/pdf-link-scroll/.
Documentos digitalizados e OCR
ocr vem desligado por padrão, e o Potato só lê essa opção no modo de ligação. Quando está definida, as palavras são extraídas no servidor e usadas para construir uma camada de texto no cliente, de modo que uma digitalização sem texto incorporado também pode receber âncoras de texto. A opção aceita false, true ou auto, e o Potato rejeita qualquer outro valor.
instance_display:
fields:
- key: pdf
type: pdf
display_options:
annotation_mode: link
ocr: auto
ocr_dpi: 200
ocr_lang: engAs três configurações diferem no momento em que a passagem é executada. false usa apenas a camada de texto incorporada, true sempre executa OCR e auto recorre ao OCR somente quando a camada de texto incorporada volta vazia. Prefira auto em um corpus misto, porque o OCR é lento e exige o Tesseract instalado. ocr_dpi controla a resolução com que cada página é rasterizada antes de o OCR lê-la, e aumentá-la custa tempo em todas as páginas. ocr_lang aceita um código de idioma do Tesseract e tem eng como padrão.
Opções de exibição
| Opção | Padrão | Efeito |
|---|---|---|
view_mode | scroll | scroll, paginated ou side-by-side |
max_height | 700 | Altura do contêiner em pixels |
max_width | nenhuma | Largura do contêiner |
text_layer | true | Habilita a seleção de texto |
show_page_controls | true | Controles de navegação entre páginas |
initial_page | 1 | Página mostrada primeiro |
zoom | auto | auto, page-fit, page-width ou uma porcentagem |
annotation_mode | span | span, bounding_box ou link |
bbox_min_size | 10 | Menor caixa aceita, em pixels |
bbox_colors | nenhuma | Cores de caixa por rótulo |
show_bbox_labels | true | Desenha os rótulos sobre as caixas |
thumbnail_sidebar | true | Miniaturas de página na visualização paginada |
enable_text_anchors | true | Spans de texto utilizáveis como âncoras de ligação |
enable_region_anchors | true | Caixas de região utilizáveis como âncoras de ligação |
anchor_schema | pdf_anchors | Esquema registrado nas âncoras |
link_schema | pdf_links | Esquema registrado nas ligações |
ocr | false | false, true ou auto |
ocr_dpi | 200 | Resolução de renderização para o OCR |
ocr_lang | eng | Código de idioma do Tesseract |
Arquivos Word e Markdown
Um arquivo DOCX ou Markdown usa a exibição document, que preserva a estrutura de títulos e parágrafos do documento e aceita span_target. Ela lê annotation_mode com span ou bounding_box, e show_outline monta um sumário a partir dos títulos no corpo. O Potato passa a marcação renderizada por uma lista de permissões antes que ela chegue a quem anota, então um campo do corpus que traga uma tag executável é removido em vez de executado.
instance_display:
fields:
- key: report
type: document
label: "Report"
display_options:
show_outline: true
max_height: 600Leitura adicional
- Exibição da instância lista todos os tipos de exibição e quais deles aceitam alvos de span.
- Anotação de spans cobre as opções de rótulo que um esquema de span aceita.
- Como anotar documentos percorre uma tarefa de revisão documental do início ao fim.
- Para detalhes de implementação, consulte a documentação de origem.