Backends¶
Bormeparser soporta diferentes backends a la hora de parsear los archivos PDF.
Usar un backend específico¶
import bormeparser.backends.pypdf2
parser = bormeparser.backends.pypdf2.parser.PyPDF2Parser('examples/BORME-A-2015-27-10.pdf')
borme = parser.parse()
Implementar un nuevo backend¶
Para implementar un nuevo backend, es necesario crear un nuevo paquete en el directorio bormeparser/backends/ con la siguiente estructura:
nuevoparser/
├── __init__.py
├── parser.py
__init__.py deberá estar vacío.
parser.py deberá contener una clase que herede de BormeAParserBackend e implemente el método _parse():
from bormeparser.backends.base import BormeAParserBackend
class NuevoParser(BormeAParserBackend):
def _parse(self):
# Do your parsing here
return DATA
_parse() debe retornar un diccionario de la siguiente forma:
{214028: {'Actos': {'Ceses/Dimisiones': [('Adm. Unico', {'JUAN GARCIA GARCIA'})],
'Datos registrales': 'T 5188, L 4095, F 146, S 8, H MA120039, I/A 4 (25.05.15).',
'Nombramientos': [('Adm. Unico', {'PEDRO GOMEZ GOMEZ'})]},
'Empresa': 'EMPRESA RANDOM SL.'},
214017: {'Actos': {'Datos registrales': 'T 2226, L 1139, F 102, S 8, H MA 33737, I/A 6 (25.05.15).',
'Modificaciones estatutarias': '8. Administración y Representacion.-.'},
'Empresa': 'EMPRESA ALEATORIA SL.'},
'borme_cve': 'BORME-A-2015-102-29',
'borme_fecha': 'Martes 2 de junio de 2015',
'borme_num': 102,
'borme_provincia': 'MÁLAGA',
'borme_seccion': 'SECCIÓN PRIMERA'}
Es decir, debe contener los atributos borme_fecha, borme_num, borme_provincia, borme_seccion y todos los actos estructurados de la misma manera. Para más información consulta el código fuente de los parsers ya disponibles.
Por último añada el nuevo parser a backends/__init__.py:
from .parser1.parser import Parser1
from .pypdf2.parser import PyPDF2Parser
from .nuevoparser.parser import NuevoParser
__all__ = ['parser1', 'pypdf2', 'nuevoparser']