Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implementacion del boletin oficial provincial de Granada. #65

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

jpuerto
Copy link

@jpuerto jpuerto commented Feb 24, 2024

He creado una primera versión del scrapper para el boletín provincial de Granada.

Por desgracia la página no es muy amigable y solo disponemos de un PDF con la información de toda la provincia. Para hacerlo mas complicado el PDF suele tener una disposición en 2 columnas para algunas páginas y normal en otras.

Para el procesamiento he utilizado pdfminer.six.

Funciona del siguiente modo:

  • Descargando el PDF en un archivo temporal.
  • Extrayendo el PDF en otro fichero temporal.
  • El fichero de texto es procesado linea a linea:
    • Si la linea está cumple con uno de las expresiones regulares para ignorar la linea. Normalmente esto es para lineas que no aportan nada de información.
    • Extracción de metadatos, si la linea cumple con algún extractor de metadatos, los datos de este se extraen a un diccionario que se fusiona con el actual.
    • Detección de contenido, en esta fase buscamos el texto de tipo "NÚMERO ###" que es el texto que aparece antes de cada edicto.
    • Si se encuentra el contenido se procesan las lineas para limpiar los saltos de linea y eliminar los guiones al final de las palabras.
  • Cada edicto se añade como metadatos.

Todavía faltan por recoger metadatos como por ejemplo el ayuntamiento y el título del edicto. Solo he probado un par de boletines, pero algunos edictos no es capaz de leerlos correctamente. El problema es sobre todo la disposición del contenido en dos columnas que hace difícil el procesamiento automático.

Javier Puerto added 2 commits February 24, 2024 14:48
* Add default line limit to process general metadata.
* Add log information.
* Use try-catch to log edict processing errors.
* Update main to test date ranges.
* Add subject metadata extractor for content.
@jpuerto
Copy link
Author

jpuerto commented Mar 1, 2024

El boletín provincial de Granada está siendo un reto complicado, el problema de parsear PDFs son muchos:

  • El contenido no está pensado para ser procesado de manera automática, si no para ser impreso. Esto limita con respecto a otras tecnologías que tienen semántica.
  • Esto implica que, si el boletín cambia con los años, tenemos que crear un nuevo scrapper. Gracias a la extracción de texto, la primera linea de cada boletín, aunque no sea visible, es de un boletín de 2008. Si consultamos boletines anteriores efectivamente el formato ha cambiado.
  • Como no tenemos semántica, tenemos que buscarla en el contenido del boletín. Esto es susceptible de fallos ya que, en algunos casos, probablemente errores de publicación o redacción, estos contenidos se omiten o cambian.

He hecho pruebas con un pequeño script en main.py y "scrapeado" desde el 1 de enero de 2023 hasta día de hoy. A ojo un 90~95% del contenido se "scrapea" sin problemas. Aquí dejo una muestra
bopgr-output.log

No digo que no se puedan procesar los boletines en PDF, pero van a dar mucho trabajo. :)

@jpuerto jpuerto marked this pull request as ready for review March 1, 2024 12:29
@ntkog
Copy link
Collaborator

ntkog commented Mar 25, 2024

El boletín provincial de Granada está siendo un reto complicado, el problema de parsear PDFs son muchos:

  • El contenido no está pensado para ser procesado de manera automática, si no para ser impreso. Esto limita con respecto a otras tecnologías que tienen semántica.
  • Esto implica que, si el boletín cambia con los años, tenemos que crear un nuevo scrapper. Gracias a la extracción de texto, la primera linea de cada boletín, aunque no sea visible, es de un boletín de 2008. Si consultamos boletines anteriores efectivamente el formato ha cambiado.
  • Como no tenemos semántica, tenemos que buscarla en el contenido del boletín. Esto es susceptible de fallos ya que, en algunos casos, probablemente errores de publicación o redacción, estos contenidos se omiten o cambian.

He hecho pruebas con un pequeño script en main.py y "scrapeado" desde el 1 de enero de 2023 hasta día de hoy. A ojo un 90~95% del contenido se "scrapea" sin problemas. Aquí dejo una muestra bopgr-output.log

No digo que no se puedan procesar los boletines en PDF, pero van a dar mucho trabajo. :)

@jpuerto échale un ojo a esto:

UDOP - Microsoft

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.

2 participants