dog-raf es un chat y un sistema de consulta por generación aumentada para explorar las ediciones del Diario Oficial de la Federación de México.
Instala uv para manejar las dependencias y ejecutar el proyecto.
Una vez instalado uv, ejecuta el siguiente comando para iniciar el proyecto:
uv venv # Crear un entorno virtual
uv sync # Sincronizar dependenciasPara bajar archivos del DOF se usa el script get_dof.py de la siguiente manera:
uv run get_dof.py --help
uv run get_dof.py --start-year=2025 --end-year=2023Esto crea directorios como:
$ tree --sort=mtime dof | head -n 10
dof
├── 2025
│   ├── 01
│   │   ├── 02012025-MAT.pdf
│   │   ├── 03012025-MAT.pdf
│   │   ├── 06012025-MAT.pdf
│   │   ├── 07012025-MAT.pdf
...
UV instala la dependencia marker que contiene un ejecutable para convertir PDFs a formato markdown.
Para convertir un folder completo ejecuta este comando:
marker --output_dir dof_markdown/2024/04/ \
  --paginate_output \
  --languages="es" \
  --skip_existing \
  --workers=1 \
  dof/2024/04/
# este comando tardó 2h 31m 23s en una macbook pro M3 de 36GB RAMNOTA: Si el comando queda a la mitad, conviene borrar las carpetas incompletas.
Para ver cuáles archivos están incompletos puedes revisar el archivo markdown que tiene separaciones por hojas gracias a la opcíon --paginate_output
con el formato {pagina}------------------------------------------------. Revisa que contenga todas las páginas del archivo PDF.
Una vez borradas las carpetas incompletas, puedes volver a ejecutar el comando anterior para que el --skip_existing se salte las carpetas que ya existen.
Para extraer el markdown de un archivo específico:
marker_single --output_dir dof_markdown/2024/04/ \
  --paginate_output \
  --languages="es" \
  dof/2024/04/01042024-MAT.pdf
# este comando tardó 2m 7s en una macbook pro M3 de 36GB RAM
# Sorprendentemente, porque otros pueden tardar más de 10 minutos.Para extraer embeddings de un archivo específico:
python extract_embeddings.py dof_markdown/2024/04/Puedes especificar la carpeta de un solo archivo, o la carpeta de un mes, o incluso la carpeta de un año. En una macbook pro M3 de 36GB RAM, este comando tardó 190 minutos en extraer los embeddings de enero del 2025.