Skip to content

Cómo anotar documentos y PDF

Anota contratos, informes y artículos como documentos y no como texto aplanado, conservando el diseño, los números de página y las referencias entre páginas.

Anota un documento sobre sus páginas renderizadas y no sobre el texto extraído de él, porque el diseño carga un significado que la extracción descarta y porque quien revisa necesita encontrar la etiqueta en la página. Aplanar un contrato hasta convertirlo en una cadena pierde el número de página, el orden de las columnas, la estructura de la tabla y la diferencia entre una nota al pie y el cuerpo del texto.

La anotación de documentos es el caso en el que falla el montaje habitual de anotación de texto. Un PDF es una descripción de marcas sobre páginas y no una secuencia de caracteres, así que dos extractores distintos te devolverán dos cadenas distintas del mismo archivo. Las páginas a varias columnas se entrelazan, los encabezados y pies aparecen en mitad del flujo y las tablas se convierten en tiradas de espacios en blanco. Quien etiqueta esa cadena está etiquetando un artefacto del extractor, y quien después abre el original no siempre puede saber a qué pasaje se refería un tramo.

Posición, número de página y estructura de referencias

Tres propiedades de un documento sobreviven en la página y no en su texto extraído. La posición le dice a quien revisa si una cláusula es un encabezado, una nota al pie o texto corrido, y la extracción reduce las tres a la misma tirada indiferenciada de caracteres. El número de página es la forma en que todo lector posterior citará el pasaje, y existe solo mientras existen las páginas. La estructura de referencias registra a qué apunta un pasaje, lo que importa siempre que una afirmación de una página se apoya en una tabla nueve páginas después.

La tercera propiedad es la que más a menudo obliga a cambiar de herramienta. La estructura de referencias dentro de un documento es una relación entre dos ubicaciones, y una herramienta que modela un documento como una sola cadena plana no tiene dónde poner la segunda ubicación. La revisión legal, la verificación de afirmaciones científicas y el análisis de informes financieros giran todos en torno a esa relación.

Tres tipos de anclaje

Una anotación sobre un documento se ancla de una de tres maneras, y la elección se sigue de la pregunta y no de la preferencia.

  • Los tramos de texto anclan a las palabras seleccionadas y sirven para preguntas sobre la redacción. Un tramo exige que el documento lleve una capa de texto, que los PDF nacidos digitales llevan y los escaneos no.
  • Las cajas de región anclan a coordenadas de página y sirven para figuras, tablas, sellos, firmas y cualquier cosa que una capa de texto nunca capturó. Funcionan sobre un escaneo sin ninguna extracción de texto.
  • Los enlaces unen dos anclajes y sirven para la estructura de referencias. Un enlace registra una relación tipada, opcionalmente dirigida, entre dos lugares del documento.

Mezclar tipos de anclaje en una misma tarea es normal. Una tarea de verificación de afirmaciones marca las afirmaciones como tramos de texto, las tablas como cajas de región y las une con enlaces.

Cómo configurarlo en Potato

La visualización pdf de Potato renderiza el archivo con PDF.js y pone la superficie de anotación sobre la página renderizada. La opción annotation_mode selecciona el tipo de anclaje y admite span, bounding_box o link. El modo de enlace es el que responde a la pregunta de las referencias, y registra anclajes y enlaces bajo nombres de esquema separados para que ambos salgan distinguibles de la exportación.

yaml
instance_display:
  fields:
    - key: pdf
      type: pdf
      label: "Document"
      display_options:
        annotation_mode: link
        view_mode: scroll
        zoom: page-width
        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
            allowed_source_labels: [claim]
            allowed_target_labels: [figure]

view_mode: scroll apila las páginas en un solo contenedor, de modo que un enlace entre la página 2 y la página 9 se puede trazar y ver como un único arco. La alternativa paginada muestra una página cada vez, lo que se lee mejor en un documento largo pero oculta el extremo lejano de un enlace entre páginas mientras se traza.

allowed_source_labels y allowed_target_labels son lo que convierte una directriz en algo que la interfaz hace cumplir. Con la configuración de arriba, un enlace refers_to solo puede empezar en una afirmación y terminar en una figura, así que quien anota no puede registrar la relación al revés. Las directrices que viven solo en un documento se siguen de forma desigual, y una restricción que aplica la herramienta no cuesta nada hacer cumplir.

Un archivo de Word o Markdown usa en su lugar la visualización document, que conserva la estructura de encabezados y párrafos y acepta span_target, de modo que un esquema de tramos puede apuntar a ella directamente.

Documentos escaneados

Un escaneo no lleva capa de texto, así que los anclajes de texto no tienen a qué adherirse. Existen dos opciones y sirven para corpus distintos. Anotar por región no necesita texto en absoluto y funciona de inmediato. Activar OCR construye una capa de texto en el servidor y hace posibles los anclajes de texto, a costa de una pasada lenta y una dependencia de Tesseract.

yaml
instance_display:
  fields:
    - key: pdf
      type: pdf
      display_options:
        annotation_mode: link
        ocr: auto

auto ejecuta OCR solo cuando la capa de texto incrustada vuelve vacía, que es el ajuste para un corpus que mezcla archivos nacidos digitales con escaneos. Potato lee la opción ocr solo en modo de enlace.

La salida del OCR es imperfecta, y una anotación anclada a una palabra mal reconocida hereda el error. En un corpus donde la calidad de reconocimiento es mala, los anclajes de región dan un registro más duradero que los de texto, porque una caja trazada alrededor de un pasaje sigue siendo correcta sean cuales sean los caracteres que se leyeron debajo.

Contrastar una etiqueta con la fuente

Cada anotación vuelve con la página en la que se asienta, que es lo que hace la etiqueta contrastable con la fuente. Quien revisa y recibe un número de página y una región puede abrir el original y confirmar el juicio. Quien recibe un desplazamiento de caracteres dentro de una cadena concatenada normalmente no puede, porque reproducir el desplazamiento significa reproducir el extractor exacto y la versión que lo produjeron.

Donde el enfoque cuesta más de lo que devuelve es en un corpus de documentos cortos, de una sola columna, nacidos digitales y sin estructura de referencias, donde la extracción es fiable y el número de página no aporta nada. La anotación de tramos simple sobre texto extraído es más sencilla ahí y da la misma respuesta.

Más lectura