ElasticSearch è un ottimo motore di ricerca full-text (sviluppato sulla base di Apache Lucene) ideale per cercare informazioni all’interno di grosse mole di dati, ma è possibile usarlo anche per effettuare delle ricerche testuali all’interno di documenti, indicizzando ed elaborando i contenuti. Possiamo utilizzare ElasticSearch persino se i documenti di partenza non hanno un contenuto testuale nativo, come, ad esempio, PDF dove il testo è stato convertito in immagine.
Bastano 4 semplici azioni:
- indicizzare i file con un crawler;
- leggere il contenuto testuale dai documenti;
- fornire testi e metadata a ElasticSearch;
- lasciare lavorare ElasticSearch.
Indicizzare i file con un crawler
Prima di poter leggere i contenuti dei documenti è importante indicizzare i file presenti nel file system. Un ottimo strumento in grado di compiere questa operazione è FS Crawler: un crawler sviluppato appositamente per ElasticSearch, in grado di restare costantemente aggiornato su ciò che accade nel file system: dalla presenza di nuovi file, all’eliminazione dei documenti.
Leggere il contenuto dei documenti
Basterà installare il plugin Ingest Attachment Processor e la libreria Apache Tika per leggere ed estrarre il contenuto dalla maggior parte dei documenti (XLS, PDF, DOC, PPT, ecc.).
Come posso estrapolare il testo da un PDF che, in realtà, è un’immagine?
Spesso alcuni documenti racchiudono in sé delle immagini con del testo: documenti cartacei scansionati o, semplicemente, fotografati tramite smartphone.
In tal caso abbiamo bisogno di un motore OCR; Tesseract, integrandosi facilmente con FS Crawer,
fa al caso nostro. Sarà fondamentale che la qualità del file da
processare sia piuttosto elevata; qualora la nostra immagine abbia una
bassa risoluzione, molto rumore oppure una qualità scadente, La libreria
ImageMagick
ci verrà incontro con utilissime funzioni per processare le
immagini quali, ad esempio, il ridimensionamento, la riduzione del
rumore, la rotazione e la conversione del file. Tali funzioni saranno
fondamentali per ottimizzare il sistema OCR.
Fornire testi e metadata a Elastic Search
Una volta che il nostro sistema avrà estrapolato il contenuto dei documenti, sarà lo stesso crawler a fornire ad ElasticSearch i testi e i metadata dei file. Il motore di ricerca indicizzerà le informazioni rendendole disponibili per ulteriori implementazioni.
Riassumendo: come posso cercare o indicizzare del testo contenuto in file pdf, word, excel o nelle immagini?
Gli strumenti OpenSource che permettono di cercare o indicizzare del contenuto testuale presente in documenti (DOC, XLS, PPT, PDF) o in immagini sono:
- ElasticSearch come motore di ricerca
- FS Crawler come crawler per indicizzare i file
- Ingest Attachment Processor e la libreria Apache Tika per estrapolare il testo da numerosi formati di file
- Tesseract OCR per scansionare il contenuto testuale presente all’interno delle immagini (anche nei file PDF)