Skip to content

Conversation

@dreglad
Copy link

@dreglad dreglad commented Feb 9, 2026

Este PR introduce la capacidad de usar como herramienta de línea de comandos (CLI) y soporte oficial para Docker.

Estas adiciones facilitan el uso de la herramienta como un proceso independiente auto-ejecutable y no solo como una librería de PHP.

Cambios Propuestos

  1. Script Ejecutable CLI en bin/csf-scraper que permite obtener datos de una Constancia de Situación Fiscal (CSF) directamente desde la terminal a partir de un archivo PDF local/descargable o de una combinación de idCIF y RFC.

  2. JSON Schema en docs/schemas/csf.schema.json. Descripción formal de la estructura del JSON esperado, útil para documentación y para validación dinámica de la salida. La herramienta CLI muestra este schema con el comando schema.

  3. Infraestructura Docker. Se añade Dockerfile y workflow CI/CD para hacer build y push a registry, inspirado en el repositorio: https://github.com/phpcfdi/cfditopdf

  4. Documentación. Se añadió la sección "Uso con Docker" en README.md con ejemplos prácticos.

  5. Tests. Se actualizaron tests unitarios y se añadió un test de integración de la interfaz de la herramienta CLI

Otros ajustes menores

  • Se añade timeout predeterminado a las consultas HTTP al SAT, ya que anteriormente el proceso potencialmente podía colgadarse por tiempo indeterminado.
  • Se añade flag -nopgbrk a pdftotext para compatibilidad con Poppler (corrige falla en versiones recientes de Poppler, sin alterar comportamiento en versiones anteriores)

Invocación

$ bin/csf-scrapper help
Uso: csf-scraper <comando> [argumentos]

Comandos:
  obtain <id-cif> <rfc>     - Obtener datos por ID CIF y RFC
  obtain <archivo|url|->    - Obtener datos desde un archivo PDF local, URL o stdin con "-"
  schema                    - Muestra el esquema JSON de la salida
  help                      - Muestra este mensaje de ayuda

Ejemplos:
  csf-scraper obtain 14111045399 UNA2907227Y5
  csf-scraper obtain ./constancia.pdf
  csf-scraper obtain https://siafweb.ib.unam.mx/CSF.pdf
  cat ./constancia.pdf | csf-scraper obtain -
  csf-scraper schema

@dreglad
Copy link
Author

dreglad commented Feb 9, 2026

Para hacer una prueba rápida con la imagen en mi Docker Hub personal, usando un PDF de un CSF descargable público:

docker run --rm \
  dreglad/csf-scraper \
  obtain https://siafweb.ib.unam.mx/CSF.pdf
{
    "razon_social": "UNIVERSIDAD NACIONAL AUTONOMA DE MEXICO",
    "regimen_de_capital": "SIN TIPO DE SOCIEDAD",
    "fecha_constitucion": {
        "date": "1929-07-22 00:00:00.000000",
        "timezone_type": 3,
        "timezone": "UTC"
    },
    "rfc": "UNA2907227Y5",
    // ...,
    // etcétera
}

Combinado con jq se pueden componer transformaciones muy útiles:

Imprime solo el RFC

docker run --rm \
  dreglad/csf-scraper \
  obtain https://siafweb.ib.unam.mx/CSF.pdf | jq -r .rfc

UNA2907227Y5

Lista de ID y descripción de cada regimen:

$ cat ~/csf.pdf \
    | docker run --rm -i dreglad/csf-scraper obtain - \
    | jq -r '.regimenes[] | "\(.regimen_id) - \(.regimen)"'

605 - Régimen de Sueldos y Salarios e Ingresos Asimilados a Salarios
612 - Régimen de las Personas Físicas con Actividades Empresariales y Profesionales

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant