Código abierto
arabic-pdf-repair: vuelve a copiar el texto árabe de PDF antiguos
Una biblioteca y herramienta de línea de comandos gratuitas y de código abierto, de GenPDF, para PDF cuyo texto árabe se pega como caracteres ilegibles tipo ÇáÚÑÈíÉ, como cuadros o con letras equivocadas. Añade la correspondencia que falta entre cada glifo y su letra, para que el texto se pueda copiar, buscar y extraer, y las páginas se ven exactamente igual que antes.
Ver el código en GitHubEl paquete en npmEjemplo práctico con un PDF de muestra
Por qué el texto árabe copiado de un PDF sale ilegible
Un PDF dibuja cada letra con una forma tomada de una fuente. Para copiar o buscar el texto, el lector necesita una tabla dentro del archivo, llamada ToUnicode, que diga qué letra representa cada forma. Muchos PDF en árabe creados con controladores de impresora antiguos de Windows, Ghostscript, PDFCreator o programas de maquetación árabes no tienen esa tabla, o tienen una incorrecta.
La página se ve bien, pero el texto copiado se pega como letras latinas tipo ÇáÚÑÈíÉ, como cuadros vacíos o como letras hebreas; la búsqueda no encuentra nada, y la extracción de texto, los lectores de pantalla y las herramientas de IA leen cosas sin sentido.
Qué arregla
- Fuentes cuyos glifos tienen nombres árabes (afii57xxx, afii62xxx, uniFE91 y similares).
- Árabe guardado en las posiciones de letras latinas: Windows-1256, ISO-8859-6 y Mac Arabic, el texto que se copia como ÇáÚÑÈíÉ.
- Fuentes Diwan XT de programas de maquetación árabes, incluidas sus copias compactas (CFF).
- Letras persas y urdu, y tablas solo en parte correctas: las entradas correctas se mantienen.
- Archivos cifrados que se abren sin contraseña (RC4, AES-128 y AES-256).
Cómo usarla
Con Node.js 20 o más reciente, un solo comando repara un archivo y escribe old.repaired.pdf al lado, sin instalar nada:
npx arabic-pdf-repair old.pdfEn tu propio código, instálala desde npm y pasa los bytes de un PDF a repairTextLayer: devuelve el archivo reparado, o null si no hay nada que reparar. La biblioteca también funciona en el navegador y en web workers.
npm install arabic-pdf-repair¿Es seguro usarla con mis archivos?
- Las páginas se ven exactamente igual: solo se añade la correspondencia entre glifos y letras.
- No hace llamadas de red ni envía telemetría: tus archivos se quedan en tu dispositivo.
- Solo cambia una fuente cuando la fuente o la página de códigos demuestra sus letras, y no adivina nada.
- El archivo original nunca se sobrescribe.
- Las versiones se compilan en GitHub y se publican con procedencia de npm, así cualquiera puede comprobar de qué código sale cada versión.
Lo que no hace
- No hace OCR: una página escaneada es una imagen, sin texto que reparar. Para leer escaneos, usa el OCR de GenPDF.
- No reordena el texto: el orden de las palabras copiadas lo decide tu lector de PDF.
- El archivo se reescribe, así que una firma digital deja de ser válida. Guarda el original firmado.
- Los archivos que piden contraseña para abrirse se quedan como están.
La misma reparación, en el editor de GenPDF
Esta biblioteca es la reparación de la capa de texto que el editor de GenPDF aplica al abrir un archivo, publicada por separado. El editor en sí no es de código abierto. Para cambiar las palabras de un PDF en árabe, y no solo reparar su texto, ábrelo en el editor de GenPDF o consulta cómo editar texto árabe en un PDF.
Licencia
Puedes usarla, modificarla y compartirla gratis con la licencia Apache 2.0, en proyectos personales y comerciales. Informa de un problema o propón un arreglo en GitHub.