File size: 1,186 Bytes
aabd32c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#Questa parte è responsabile dell'estrazione del testo e delle informazioni sul
#layout utilizzando spaCyLayout

import spacy
from typing import Any
from spacy_layout import spaCyLayout
import logging

logger = logging.getLogger(__name__)

#Configurazione del logger
logging.basicConfig(level=logging.INFO)

#Funzione per inizializzare e restituire l'istanza di spacy con il componenete spacylayout
#Ci permette di analizzare la struttura del PDF (colonne, titoli, etc.)
def get_layout_extractor():
    #Inizializza un modello spaCy vuoto in italiano
    nlp = spacy.blank("it")
    #Aggiunge il componente spaCyLayout al modello
    layout_extractor = spaCyLayout(nlp)

    logger.info("Estrattore spaCyLayout per PDF inizializzato")
    return layout_extractor

#Funzione per caricare il documento da bytes
def load_pdf_from_bytes(pdf_bytes: bytes, layout_extractor: Any):
    try:
        #Chiama l'estrattore sui bytes del PDF
        doc = layout_extractor(pdf_bytes)
        logger.info("Estrazione del layout del PDF completata")
        return doc
    except Exception as e:
        logger.error(f"Errore durante il caricamento o l'estrazione del PDF: {e}")
        return None