¿Por qué vale la pena guardar más números de página y fragmentos de texto originales en JSON?
El resultado de la extracción es solo un `amount: 1200` y el revisor aún tiene que revisar todo el documento nuevamente. Guardar más números de página y fragmentos breves de texto original suele ser más útil que añadir un decimal de "confianza": permite localizar los errores y documentar bien las correcciones posteriores.
Si el resultado de su extracción solo tiene un amount: 1200, el revisor aún debe revisar todo el documento nuevamente para confirmar su fuente. Guardar números de página adicionales y fragmentos de texto breves suele ser más útil que agregar otro decimal de "confianza". Permite localizar errores y documentar cada corrección.
Este artículo es adecuado para desarrolladores y editores que realizan extracción de documentos, revisión bilingüe o verificación de campo financiero. El código de este artículo se demuestra utilizando muestras sintéticas y ha pasado la inspección de muestras en un entorno aislado, pero esto no representa una garantía de todos los archivos o efectos del producto reales. Antes de procesar documentos importantes, conserve los originales y revíselos de acuerdo con los límites y elementos de aceptación del texto.
¿Cómo guardar varios números de página y fragmentos de texto originales? Conclusión de una frase
Guarde varios números de página, fragmentos breves de texto original y hashes de archivos para que cada campo se pueda verificar en la página de origen.
| tu situación | Prácticas recomendadas | razón |
|---|---|---|
| Los campos solo tienen valores y no fuentes | Guarde números de página y fragmentos breves de texto original al mismo tiempo | El revisor puede localizar la ubicación directamente sin tener que volver a leer todo el documento. |
| Necesidad de confirmar a qué versión del archivo corresponde el registro | Guardar hash del contenido del archivo | El hash puede identificar la versión correspondiente. |
| Los números de página de la biblioteca de análisis comienzan desde 0 | Convertir para comenzar desde 1 en el límite y anotado en el protocolo | Consistente con los números de página vistos manualmente |
| Los fragmentos pueden contener información confidencial. | Mantenga solo oraciones cortas relacionadas con el campo. | Evite copiar la página completa en registros, índices de búsqueda o mensajes de notificación. |
📊 Comparación central
| artículo de comparación | Guarde solo valores de campo (como amount: 1200) | Guarde números de página y fragmentos de texto breves |
|---|---|---|
| Ubicación errónea | Necesitas revisar todo el documento | Puedes reducirlo a la página correspondiente |
| Registros de corrección | Es difícil explicar la base | Cada corrección tiene un extracto original como referencia |
El sujeto de la evidencia debería poder devolver a la gente al texto original
El siguiente ejemplo utiliza números de página que empiezan desde 1. Si tu biblioteca de análisis empieza desde 0, necesitas convertir en el límite y especificar esto en el protocolo.
Solo las frases cortas relacionadas con campos se mantienen en fragmentos, evitando copiar información sensible de toda la página en registros, índices de búsqueda o mensajes de notificación.
Primero revisa la forma, luego la correspondencia
from jsonschema import Draft202012Validator
schema = {
"type": "object", "required": ["value", "evidence"],
"additionalProperties": False,
"properties": {
"value": {"type": "string"},
"evidence": {"type": "object", "additionalProperties": False,
"required": ["page", "quote"],
"properties": {"page": {"type": "integer", "minimum": 1},
"quote": {"type": "string", "minLength": 1}}}
}
}
v = Draft202012Validator(schema)
pages = ["Invoice total: USD 1200."]
record = {"value": "1200", "evidence": {"page": 1, "quote": "USD 1200"}}
assert v.is_valid(record)
def quote_exists(r):
if not v.is_valid(r):
return False
e = r["evidence"]
return e["page"] <= len(pages) and e["quote"] in pages[e["page"] - 1]
assert quote_exists(record)
fake = {"value": "9999", "evidence": {"page": 1, "quote": "USD 9999"}}
assert v.is_valid(fake)
assert not quote_exists(fake)
assert not quote_exists({"value": "1", "evidence": {"page": 9, "quote": "x"}})
Este ejemplo sintético construye deliberadamente un registro estructuralmente legítimo pero sin pruebas. Demuestra que la validación de esquemas y la coincidencia de fuentes no pueden reemplazarse mutuamente: tener una estructura correcta no significa que la evidencia exista realmente. La estructura de campo de un objeto puede referenciarse en Estructura del objeto del esquema JSON.
Los PDFs reales pueden tener diferencias de segmentación de palabras, ligadura y espacio; la coincidencia de subcadenas es solo una demostración mínima y no puede usarse directamente como algoritmo completo de verificación de evidencias.
Las pruebas también deben estar vinculadas a la versión del archivo
| Objetos a salvar | Se puede resolver | Sin garantías |
|---|---|---|
| Hash del contenido del archivo | Identificar la versión correspondiente | El que sube tiene permisos de archivo |
| Número de página | Reduce el alcance de tu búsqueda | La página no fue reordenada |
| Extracto original del texto | Verificación rápida por texto | La semántica de los campos debe ser correcta |
| Coordenadas y sistemas de coordenadas | Localiza el área de la página | Los resultados del OCR han sido precisos |
El texto original existe, pero también puede estar citado en el lugar equivocado
La misma cantidad puede aparecer varias veces en un mismo documento. Aunque existan fragmentos, necesitas determinar si son totales, fiscales o el saldo del periodo anterior.
Se puede comprobar una aceptación adicional:
- Si las etiquetas de campo son consistentes
- Comprueba si la tabla es correcta
- Si el contexto adyacente coincide
Cuando te encuentres con varios candidatos, no elijas solo al primero, sino compara el contexto uno por uno.
La corrección bilingüe requiere trazabilidad de la forma más eficaz
Al utilizar estos registros fuente junto con las comprobaciones bilingües de OmniDoc (Entrada de producto), los revisores pueden saltar de los números traducidos a la página fuente para confirmar su significado.
El valor de este enfoque no está en hacer que la salida parezca más complicada, sino en hacer cada corrección claramente explicada, reduciendo el tiempo dedicado a buscar el original.
🎯 ¿Qué método te conviene?
Si necesitas corrección manual de los números en la traducción
Se da prioridad a guardar números de página y fragmentos cortos originales; durante la corrección, puedes volver directamente a la página fuente para confirmar.
Si necesitas la versión del archivo correspondiente al registro de trazabilidad
Guarda el hash del contenido del archivo y úsalo junto con los números de página para reducir el rango de búsqueda.
Si tu campo puede aparecer varias veces en el archivo
Además de comparar los clips, también necesitas comprobar las etiquetas de campo, la tabla donde están y el contexto adyacente; no elijas solo al primer candidato.
❓ Preguntas frecuentes (FAQ)
1. ¿Puede guardar números de página y clips de texto originales reemplazar la validación de Schema?
No. Los ejemplos de este artículo muestran que los registros estructuralmente válidos aún pueden carecer de pruebas correspondientes, y ambos deben ser revisados por separado.
2. ¿Por qué no añadir simplemente un campo de confianza?
El texto original considera que guardar los números de página y los fragmentos cortos del texto original suele ser más útil, ya que permite identificar errores y proporciona pruebas para correcciones posteriores.
3. Después de guardar el hash, ¿puedes confirmar que el contenido del archivo es correcto?
Los hashes solo pueden reconocer la versión correspondiente; no pueden garantizar que el subador tenga permisos de archivo, ni que la semántica del campo sea correcta.
4. ¿Cuánto tiempo debe conservarse un fragmento?
Conserva solo frases cortas relacionadas con el campo, evitando copiar información sensible de toda la página en registros, índices de búsqueda o mensajes de notificación.
📝 Resumen
Guarda números de página, fragmentos de texto originales cortos y hashes de archivos para permitir que los valores de los campos se revisen en la página fuente, y también para proporcionar correcciones basadas en la evidencia. Antes de manejar documentos importantes, por favor conserva los originales y completa la revisión.
Experiencia ahora: Sube tu documento para empezar a traducir, conservando el formato original


