fbpx

Poter semplificare e automatizzare un flusso di lavoro macchinoso e ripetitivo è il sogno di molte aziende, nonché la sfida più ostica e divertente che una software house possa cogliere. Quante aziende, seppur ben strutturate, continuano a lavorare inoltrando email con fogli di calcolo complicatissimi senza tener traccia del flusso di lavoro?
In questo breve articolo parleremo di come siamo riusciti a semplificare e automatizzare il flusso di lavoro di un’azienda leader nel suo settore (prodotti ricondizionati e cancellazione certificata dei dati, per istituti bancari).

Lo scenario

La più grande realtà italiana di ri-condizionamento hardware e cancellazione sicura dei dati cercava, con una certa urgenza, una soluzione per snellire l’estenuante carico di lavoro sostenuto nella gestione amministrativa dei prodotti informatici rientranti da fine leasing.
Mensilmente un’azienda partner forniva loro un complesso foglio di calcolo Excel contenente la lista di tutti i contratti in scadenza; per ciascun contratto veniva fornita la relativa fattura in PDF, ma ciascun contratto poteva contenere uno o più prodotti (asset).
Verificare la correttezza dei valori risultava un’operazione noiosa e complessa e, con altrettanta difficoltà, gli operatori calcolavano il prezzo di vendita. Lavorando tramite il continuo scambio di e-mail e fogli di calcolo si era costantemente in balia dei piccoli errori di distrazione, inoltre il management aziendale era impossibilitato a conoscere il reale progresso del flusso di lavorazione.

Caos documenti

La sfida

Dopo un’attenta analisi dei metodi operativi, delle parti coinvolte e degli strumenti lavorativi, abbiamo compreso che la nostra applicazione doveva rilevare con precisione i singoli importi contenuti nelle fatture (file PDF), confrontarli con i dati del foglio di calcolo, individuare eventuali anomalie ed accompagnare l’operatore a definire il valore economico dei prodotti da ricondizionare. In aggiunta, la nostra applicazione doveva automatizzare anche la fase finale della lavorazione, operando sul CRM aziendale gestendo il flusso dell’offerta economica ed il rientro di ciascun prodotto a fine leasing.

Quindi un sistema in cloud multiutente in grado di:

  • automatizzare la validazione dei contratti;
  • gestire e valorizzare i contratti d’acquisto;
  • aiutare l’operatore a calcolare i prezzi di vendita (B2B e B2C) di ciascun prodotto;
  • gestire lo status di lavorazione dei contratti;
  • esportare le anagrafiche nel CRM aziendale.

Tutto piuttosto semplice. Peccato che le fatture non erano impaginate in maniera omogenea: ciascuna società aveva il proprio stile grafico e l’applicazione delle imposte dipendeva dalla residenza del fornitore. Perciò rilevare con precisione tutti i valori economici delle fatture sarebbe stata la nostra prima sfida!

La nostra proposta

Secondo noi la migliore soluzione consisteva nella realizzazione di un sistema che rilevasse, attraverso una scansione OCR, i dati provenienti da una grande quantità di documenti, di collegarli ai reali contratti stipulati, dando evidenza delle difformità tra i dati presenti in fattura e quelli dichiarati nel foglio di calcolo Excel.
Una Single-Page Application basata sul framework front-end VueJs con una serie di microservizi in PHP esposti tramite REST API era, secondo il nostro punto di vista, la base su cui sviluppare il sistema.

Lo sviluppo

Per gestire i dati abbiamo scelto di utilizzare un sistema ibrido basato su Mysql, per l’anagrafica dei contratti e degli asset, ed ElasticSearch per la memorizzazione e ricerca dei documenti scansionati (tramite il motore OCR Tesseract).
In poche parole avremo sviluppato un sistema di monitoraggio che, dopo l’upload dei contratti (PDF) e della lista (Excel), sia alla costante ricerca di nuovi file caricati nel sistema per darli in pasto ad ElasticSearch; quest’ultimo servizio avrebbe fornito i dati, correttamente indicizzati, al nostro algoritmo con il quale avremmo evidenziato le eventuali differenze tra i dati inseriti e i contratti stipulati.

I piccoli ostacoli

Come in ogni progetto che si rispetti, prima o poi, emergono alcune difficoltà.
Durante lo sviluppo ci siamo resi conto che il motore OCR Tesseract non era in grado di gestire correttamente documenti o immagini con una risoluzione inferiore ai 300 dpi, infatti il nostro sistema segnalava numerose difformità degli importi rilevati causati proprio da una cattiva scansione del dato: se il PDF aveva una bassa risoluzione, il motore OCR non leggeva correttamente gli importi e forniva dati errati al nostro sistema.

Per risolvere questo problema abbiamo sfruttato la libreria Imagick di PHP e, dopo numerosi A/B test, la soluzione migliore prevedeva: 

  • upscaling del documento;
  • conversione del singolo file in più immagini in bianco e nero;
  • diminuzione del rumore di ciascun immagine;
  • aumento della definizione del testo;
  • ottimizzazione della dimensione del file.

Inoltre, come detto in precedenza, le fatture non avevano un layout univoco; ciò ha complicato la scrittura delle funzioni in grado di catturare correttamente i dati. Abbiamo scritto delle espressioni regolari per pulire attentamente i testi, eliminando tutti gli elementi di disturbo (come, ad esempio, le date presenti in fattura). Successivamente, partendo da una serie di regole matematiche, abbiamo sviluppato l’algoritmo per l’estrapolazione dell’imponibile e dei serial number dei prodotti.
Attraverso queste piccole e semplici soluzioni abbiamo superato anche questi ostacoli!

Un esempio di Image processing con Tesseract
Un esempio di Image processing con Tesseract

Il go-live e l’affiancamento iniziale

Dopo un breve, ma frenetico, tempo dedicato al beta-testing siamo andati online. Come da nostra abitudine abbiamo dedicato un importante periodo alla formazione degli operatori: attraverso webinar, corsi online (sulla piattaforma Moodle) e il rilascio di un manuale utente chiaro e preciso. In questo lasso di tempo siamo stati al loro fianco sostenendo la conoscenza dei nuovi strumenti, chiarendo qualsiasi loro dubbio e facendo bagaglio delle loro perplessità. L’affiancamento (anche telefonico) è durato diversi mesi poiché, come spesso accade, non è semplice cambiare metodo e strumenti di lavoro, magari tali difficoltà sono dovute, inconsciamente, ad un’umana riluttanza al cambiamento.

Soddisfatti?

Al termine del percorso di formazione tutti gli operatori hanno apprezzato le funzionalità, gli automatismi e persino la semplicità d’uso del sistema da noi sviluppato.
A pieno regime il nostro cliente è riuscito ad ottimizzare il lavoro dei propri dipendenti, risparmiando numerose ore precedentemente impiegate nella gestione dei contratti e riducendo al minimo gli errori. Aumentando la qualità del lavoro ha limitato ingenti perdite economiche e migliorato il benessere aziendale. Inoltre l’area management è finalmente in grado di monitorare il flusso del lavoro e conoscere statistiche dettagliate sui reali guadagni.

Noi siamo orgogliosi dell’esito di questa sfida: abbiamo automatizzato un processo aziendale contorto e farraginoso, facendo tesoro di una nuova esperienza sullo stack ELK e l’utilizzo di Tessereact. Siamo felici di aver accettato una sfida difficile, di aver affrontato con tenacia le diverse difficoltà e, come sempre più spesso ci accade, abbiamo tenuto fede alla nostra visione aziendale: crescere assieme ai nostri clienti!

Vuoi parlarne di persona?
Non esitare, contattaci ora!