Antes de entregar la tarea de traducción de PDF, verifique primero la fuente en lugar de apresurarse a cambiarla.

La lista de fuentes predeterminada tiene una longitud diferente a la tupla devuelta por full=True. A continuación, lea los primeros seis elementos y luego verifique si los bytes de fuente devueltos por extract_font están vacíos. Una referencia a una fuente Base14 no significa que la fuente esté incrustada en el programa; Tampoco las fuentes de subconjunto deben considerarse un error.

Cuando muchas personas obtienen un PDF para traducir, lo primero que piensan es en cambiarlo directamente a Siyuan Heibo o Arial. Esto suele causar problemas durante la entrega: los símbolos matemáticos se convierten en cuadrados, los números de las tablas están desalineados o la traducción no se puede abrir en ciertos lectores. Este artículo está escrito para desarrolladores y propietarios de documentos que necesitan hacerse cargo de la tarea de traducción de PDF. Después de leer, sabrá cómo utilizar PyMuPDF para inventariar fuentes, cómo interpretar los resultados devueltos y qué conclusiones no se pueden sacar basándose únicamente en la salida del código.

El propósito del inventario de fuentes es confirmar la editabilidad técnica y la estabilidad de la representación, no realizar una auditoría de cumplimiento legal. La lista de fuentes predeterminada es diferente de la longitud de tupla devuelta por full=True. Al leer, se deben tomar los primeros seis elementos y luego verificar si los bytes de fuente devueltos por extract_font están vacíos. Las referencias a fuentes Base14 no significan que la fuente esté incrustada en el programa, y el subconjunto de fuentes no siempre debe tratarse como un error.

Conclusión de una oración

Primero haga un inventario de las fuentes y luego decida la ruta de traducción. No cambie las fuentes globalmente antes de extraer el texto.

tu situaciónPrácticas recomendadasrazón
El programa de fuentes está vacíoLos registros no se extraen al incrustador y confirman la situación de la páginaLa referencia Base14 no es igual a la fuente incrustada
encontrar subconjuntos de fuentesMantener la identidad de la fuenteLas fuentes de subconjunto no equivalen a corrupción
La lista de fuentes está vacíaConfirmar el contenido de la páginaLa página puede ser una imagen u otro camino dibujado.
Necesidad de procesar archivos reales.Verifique primero con muestras insensibilizadasEl código de muestra no representa efectos en todos los archivos reales

¿Por qué no podemos reemplazar las fuentes directamente a nivel mundial?

Reemplazar fuentes directamente encontrará varios problemas típicos:

  • Los símbolos matemáticos del texto original se convierten en cuadrados.
  • La alineación de ancho igual de números en la tabla no es válida.
  • Se incrustan fuentes restringidas, lo que provoca que la traducción no se abra en algunos lectores.

Por lo tanto, antes de comenzar la extracción del texto o la reconstrucción tipográfica, haga un inventario de fuentes del documento. `get_page_fonts()` es la sonda subyacente proporcionada por PyMuPDF, que puede indicarle a qué recursos de fuentes hace referencia realmente cada página, si están completamente integrados y el tipo de codificación. Esta información determina si en el futuro se debe utilizar OCR, reemplazo directo o reordenamiento manual.

Puntos clave al leer información de fuentes

  • La lista de fuentes predeterminada tiene una longitud diferente a la tupla devuelta por full=True, que se lee como los primeros seis elementos.
  • Cuando el programa de fuentes está vacío, significa que los bytes de fuentes incrustados no se extraen.
  • Las fuentes de subconjunto solo necesitan conservar el identificador de fuente y no juzgarlo directamente como un error.

Pruebas sintéticas: construcción de memoria y verificación de afirmaciones.

Para permitir que el ejemplo se ejecute de forma aislada, creamos un caso de prueba totalmente autónomo. En lugar de depender de archivos externos, el script utiliza PyMuPDF para crear un PDF que contiene fuentes estándar en la memoria y luego realiza inmediatamente un inventario de fuentes en él. Esto no sólo garantiza la reproducibilidad, sino que también evita riesgos de derechos de autor y privacidad.

import pymupdf
with pymupdf.open() as doc:
    page = doc.new_page()
    page.insert_text((72, 72), "Font sample", fontname="helv")
    fonts = doc.get_page_fonts(0, full=True)
    assert fonts
    report = []
    for item in fonts:
        xref, ext, kind, basefont, name, encoding = item[:6]
        extracted_name, extracted_ext, extracted_type, data = doc.extract_font(xref)
        report.append({"name": basefont, "font_program_present": bool(data),
                       "xref": xref, "encoding": encoding})
    assert report[0]["name"] == "Helvetica"
    assert report[0]["font_program_present"] is False
    assert report[0]["xref"] > 0

Esta prueba tiene límites claros: un objeto de fuente sintética "dañado" o "no incrustado" no se puede construir en la memoria sin traer un archivo de fuente externo. Por lo tanto, esta prueba se centra en dos cosas: verificar la precisión del análisis de las fuentes incrustadas normales y el manejo defensivo de la función de números de página no válidos. Las ramas de excepción deben probarse individualmente. El código de demostración se ejecuta en un entorno aislado, pero esto no representa una garantía de todos los archivos reales o del rendimiento del producto.

Criterios de aceptación y límites de revisión manual

Los resultados "seguros" o "de advertencia" de un código son sólo señales técnicas y no pueden equipararse directamente con la viabilidad de la traducción. El script puede informar con precisión el estado de la incrustación, pero no puede decir si la fuente tiene un glifo correspondiente en el idioma de destino, ni puede evaluar si la licencia permite la modificación de la incrustación. Estas decisiones deben ser tomadas por personas dentro del contexto del proyecto.

Decisiones específicas de manejo de excepciones

observarque hacerno debe inferirse
El programa de fuentes está vacíoRegistros no recuperados para incrustarLas citas en Base14 no equivalen a la incrustación
fuente de subconjuntoMantener la identidad de la fuenteNo hay determinación directa del daño
La lista está vacíaConfirmar el contenido de la páginaPuede ser una imagen u otro camino dibujado.

Antes de procesar documentos importantes, conserve los originales y revíselos de acuerdo con los límites y los elementos de aceptación anteriores.

🎯 ¿Qué método es el adecuado para ti?

Si acaba de recibir un PDF para traducir

Primero haga un inventario de las fuentes antes de decidir qué camino tomar. No se apresure a reemplazar las fuentes.

Si el resultado de la detección muestra que el programa de fuentes está vacío

Documente esto y confirme el contenido de la página, no lo trate como si la inserción estuviera completa.

Si hay subconjuntos de fuentes en el documento

Conserve el logotipo de la fuente y trátelo como una situación normal en lugar de juzgarlo directamente como un error.

Si necesita verificar con archivos reales

Utilice muestras insensibles para las que tenga permiso para cargar y vuelva a verificar los resultados utilizando las listas de verificación de este artículo.

❓ Preguntas frecuentes (FAQ)

1. ¿La referencia de fuente Base14 significa que la fuente ha sido incrustada?

No. La referencia a la fuente Base14 no significa que el programa de fuentes haya sido incrustado. Debe verificar si los bytes de fuente devueltos por extract_font están vacíos.

2. ¿Hay algún problema con la fuente del subconjunto?

incierto. Las fuentes de subconjunto no deben considerarse errores en absoluto. Simplemente conserve el logotipo de la fuente y no lo juzgue directamente como dañado.

3. Si la lista de fuentes está vacía, ¿significa que hay un problema con la página?

incierto. Cuando la lista esté vacía, primero debe confirmar el contenido de la página. La página puede ser una imagen u otro trazado de dibujo.

4. ¿Se pueden utilizar los resultados "seguros" de un script directamente en las decisiones de traducción?

no puedo. La salida del código es solo una señal técnica y no puede indicar si los glifos del idioma de destino están disponibles o si la licencia permite la modificación de la incrustación.

📝 Resumen

El inventario de fuentes es un paso básico antes de la traducción de PDF. Le ayuda a juzgar la editabilidad y la estabilidad de representación del documento. Después de obtener el archivo, primero verifique la fuente y luego seleccione la ruta. Después de la traducción, aún necesitas verificar la correspondencia entre el título, el texto y la leyenda.

Pruébelo ahora: cargue el documento para comenzar la traducción, conservando el diseño original

Actualizado 2026-11-15