Skip to content

giros-dit/Script_PDF_MD

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

PDF to Markdown Lossless

Script en Python para convertir documentos PDF a Markdown, intentando conservar el texto y la estructura original lo mejor posible.

Está pensado sobre todo para manuales técnicos, documentos oficiales y PDFs con comandos de consola, cabeceras repetidas, índices o partes escaneadas.

Qué hace

  • Extrae texto con PyMuPDF.
  • Usa OCR cuando detecta bloques de imagen o texto mal extraído.
  • Elimina cabeceras y pies repetidos.
  • Limpia ruido de firmas digitales y certificados en las primeras páginas.
  • Intenta reparar títulos y numeraciones partidas.
  • Detecta bloques de comandos y los guarda como bash.
  • Permite usar Marker de forma opcional para comparar resultados o rescatar tablas.

Requisitos

  • Python 3
  • PyMuPDF
  • Tesseract OCR, si el PDF necesita OCR

Instalación básica:

pip install pymupdf

Para OCR con Python:

pip install pytesseract Pillow

En Debian/Ubuntu:

sudo apt update
sudo apt install tesseract-ocr tesseract-ocr-spa tesseract-ocr-eng

Uso

python3 pdf_to_md_lossless_v13.py entrada.pdf salida.md

Ejemplo:

python3 pdf_to_md_lossless_v13.py manual.pdf manual.md

Por defecto, el script añade información de conversión al inicio del archivo y separa el contenido por páginas.

Uso recomendado

Para generar un Markdown más limpio:

python3 pdf_to_md_lossless_v13.py entrada.pdf salida.md \
  --plain-text \
  --fix-joins \
  --normalize-quotes \
  --drop-nonprintables

Para quitar la cabecera técnica y los separadores de página:

python3 pdf_to_md_lossless_v13.py entrada.pdf salida.md \
  --plain-text \
  --no-conversion-header \
  --no-page-markers

PDFs escaneados

Si el documento es principalmente una imagen o tiene poco texto extraíble:

python3 pdf_to_md_lossless_v13.py escaneado.pdf salida.md \
  --enable-fullpage-ocr-fallback \
  --ocr-lang spa \
  --ocr-dpi 400

Por defecto se usa spa+eng y 300 DPI.

Opciones útiles

Opción Descripción
--plain-text No mete el texto normal dentro de bloques de código.
--no-conversion-header No añade metadatos de conversión al principio.
--no-page-markers No separa el resultado por páginas.
--fix-joins Corrige algunas uniones habituales en comandos.
--normalize-quotes Sustituye comillas tipográficas por comillas normales.
--drop-nonprintables Elimina caracteres no imprimibles.
--dehyphenate Intenta unir palabras partidas entre líneas.
--keep-running-headers Conserva cabeceras y pies repetidos.
--keep-legal-signature-noise Conserva el contenido relacionado con firmas y certificados.
--enable-fullpage-ocr-fallback Activa OCR de toda la página como último recurso.
--ocr-lang spa Indica el idioma de Tesseract.
--ocr-dpi 400 Aumenta la resolución usada para OCR.
--debug-extraction Añade información de depuración al Markdown.

Consulta todas las opciones:

python3 pdf_to_md_lossless_v13.py --help

Marker

Marker es opcional. Puede servir para comparar resultados o intentar rescatar tablas.

Instalación:

pip install marker-pdf

Generar una conversión adicional con Marker:

python3 pdf_to_md_lossless_v13.py entrada.pdf salida.md \
  --marker-compare

Rescatar tablas:

python3 pdf_to_md_lossless_v13.py entrada.pdf salida.md \
  --marker-table-rescue

Añadir las tablas rescatadas al final del archivo principal:

python3 pdf_to_md_lossless_v13.py entrada.pdf salida.md \
  --append-marker-table-rescue

Notas

  • El resultado puede necesitar revisión manual en documentos con varias columnas, tablas complejas o diseños poco convencionales.
  • La calidad del OCR depende del escaneo original.
  • Las imágenes y figuras no se exportan.
  • Marker no es necesario para usar el script.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages