Anotación de PDF
Anota PDF en Potato con el tipo de visualización pdf, con resaltado de spans, cajas delimitadoras sobre la página, enlaces entre páginas y OCR para archivos escaneados.
La visualización pdf renderiza un PDF en el navegador con PDF.js y coloca la superficie de anotación sobre la página renderizada en lugar de sobre texto extraído de antemano. Quien anota ve el documento real, con sus columnas, tablas, figuras y saltos de página intactos, y lo etiqueta ahí mismo. La visualización toma una única clave obligatoria, el campo que contiene la ruta o la URL del PDF, y todo lo demás es una opción de visualización.
instance_display:
fields:
- key: pdf
type: pdf
label: "Document"
display_options:
view_mode: scroll
max_height: 760
zoom: page-widthview_mode toma scroll, paginated o side-by-side. El desplazamiento continuo apila todas las páginas en un mismo contenedor, lo que importa cuando una anotación tiene que cruzar un salto de página. La vista paginada muestra una página cada vez con controles de navegación y encaja con documentos largos, donde se trabaja página a página.
Tres modos de anotación
annotation_mode decide qué puede dibujar quien anota, y es la opción que cambia la tarea en sí, no su apariencia. El valor por defecto es span.
| Modo | Qué hace quien anota | Anclado a |
|---|---|---|
span | Selecciona texto y le aplica una etiqueta | La capa de texto de PDF.js |
bounding_box | Dibuja una caja en cualquier punto de la página | Coordenadas de página |
link | Marca anclas y luego las conecta | Spans de texto y regiones de página |
El modo span depende de que el PDF lleve una capa de texto, cosa que ocurre en cualquier PDF generado por un procesador de textos o un sistema de composición tipográfica, y no ocurre en un escaneo. El modo de caja delimitadora no depende de ella, así que una página escaneada todavía se puede etiquetar por regiones sin ninguna extracción de texto.
Como la visualización pdf ancla los spans a través de la capa de texto de PDF.js y no del contenedor .text-content que usan las demás visualizaciones, no acepta la marca span_target. La anotación de spans sigue funcionando, a través de la capa de texto propia del PDF.
Enlaces entre páginas
El modo de enlace sirve para relaciones que abarcan varias páginas, como una afirmación en la página 2 que se apoya en una figura de la página 9. Quien anota marca primero las anclas y después traza enlaces tipados entre ellas; Potato registra las anclas y los enlaces bajo nombres de esquema distintos.
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 y allowed_target_labels restringen qué anclas puede unir un tipo de enlace, y así una directriz pasa a ser algo que impone la interfaz en vez de algo que quien anota tiene que recordar. Un enlace refers_to configurado como arriba solo puede empezar en un claim y solo puede terminar en un figure, de modo que se rechaza un enlace trazado desde una figura de vuelta a una afirmación. Pon directed: false para una relación simétrica como same_as.
Hay dos clases de anclas y ambas se pueden desactivar por separado. enable_text_anchors permite resaltar un span de texto y enable_region_anchors permite dibujar una caja de región, que es lo que necesita una figura o una tabla. En el repositorio original hay un ejemplo completo y comentado en examples/advanced/pdf-link-scroll/.
Documentos escaneados y OCR
ocr está desactivado por defecto y Potato solo lo lee en el modo de enlace. Cuando se activa, las palabras se extraen en el servidor y se usan para construir una capa de texto en el cliente, de forma que un escaneo sin texto incrustado también puede llevar anclas de texto. La opción toma false, true o auto, y Potato rechaza cualquier otro valor.
instance_display:
fields:
- key: pdf
type: pdf
display_options:
annotation_mode: link
ocr: auto
ocr_dpi: 200
ocr_lang: engLos tres ajustes se diferencian en cuándo se ejecuta la pasada. false usa solo la capa de texto incrustada, true ejecuta OCR siempre y auto recurre al OCR únicamente cuando la capa de texto incrustada vuelve vacía. En un corpus mixto conviene auto, porque el OCR es lento y necesita Tesseract instalado. ocr_dpi controla la resolución a la que se rasteriza cada página antes de que el OCR la lea, y subirlo cuesta tiempo en cada página. ocr_lang toma un código de idioma de Tesseract y su valor por defecto es eng.
Opciones de visualización
| Opción | Por defecto | Efecto |
|---|---|---|
view_mode | scroll | scroll, paginated o side-by-side |
max_height | 700 | Altura del contenedor en píxeles |
max_width | ninguno | Anchura del contenedor |
text_layer | true | Habilita la selección de texto |
show_page_controls | true | Controles de navegación entre páginas |
initial_page | 1 | Página que se muestra primero |
zoom | auto | auto, page-fit, page-width o un porcentaje |
annotation_mode | span | span, bounding_box o link |
bbox_min_size | 10 | Caja más pequeña aceptada, en píxeles |
bbox_colors | ninguno | Colores de caja por etiqueta |
show_bbox_labels | true | Dibuja las etiquetas sobre las cajas |
thumbnail_sidebar | true | Miniaturas de página en la vista paginada |
enable_text_anchors | true | Spans de texto utilizables como anclas de enlace |
enable_region_anchors | true | Cajas de región utilizables como anclas de enlace |
anchor_schema | pdf_anchors | Esquema registrado en las anclas |
link_schema | pdf_links | Esquema registrado en los enlaces |
ocr | false | false, true o auto |
ocr_dpi | 200 | Resolución de renderizado para el OCR |
ocr_lang | eng | Código de idioma de Tesseract |
Archivos Word y Markdown
Un archivo DOCX o Markdown usa en su lugar la visualización document, que conserva la estructura de encabezados y párrafos del documento y sí acepta span_target. Lee annotation_mode con valor span o bounding_box, y show_outline construye un índice a partir de los encabezados del cuerpo. Potato pasa el marcado renderizado por una lista de permitidos antes de que llegue a quien anota, así que un campo del corpus que lleve una etiqueta ejecutable queda eliminado en vez de ejecutarse.
instance_display:
fields:
- key: report
type: document
label: "Report"
display_options:
show_outline: true
max_height: 600Lecturas adicionales
- Visualización de instancias enumera todos los tipos de visualización y cuáles aceptan destinos de span.
- Anotación de spans cubre las opciones de etiqueta que toma un esquema de span.
- Cómo anotar documentos recorre una tarea de revisión documental de principio a fin.
- Para detalles de implementación, consulta la documentación fuente.