Αυτοματοποίηση ψηφιοποίησης παραλαβών με OCR και Deep Learning PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Αυτοματοποίηση Ψηφιοποίησης Παραλαβών με OCR και Deep Learning

Αυτοματοποίηση Ψηφιοποίησης Παραλαβών με OCR και Deep Learning

Θέλετε να αυτοματοποιήσετε την εξαγωγή δεδομένων από αποδείξεις; Δείτε την προεκπαίδευση των Nanonets OCR απόδειξης or Φτιάξε το δικό σου προσαρμοσμένη OCR απόδειξης. Μπορείτε επίσης να προγραμματίστε ένα demo για να μάθετε περισσότερα για τις περιπτώσεις χρήσης AP!


OCR απόδειξης ή η ψηφιοποίηση αποδείξεων αντιμετωπίζει την πρόκληση της αυτόματης εξαγωγής πληροφοριών από μια απόδειξη. Σε αυτό το άρθρο, καλύπτω τη θεωρία πίσω από την ψηφιοποίηση αποδείξεων και εφαρμόζω έναν αγωγό από άκρο σε άκρο χρησιμοποιώντας το OpenCV και τεσεράκτ. Εξετάζω επίσης μερικές σημαντικές εργασίες που κάνουν Ψηφιοποίηση παραλαβών με χρήση Deep Learning.

Τι είναι η Ψηφιοποίηση Αποδείξεων;

Οι αποδείξεις φέρουν τις πληροφορίες που απαιτούνται για την πραγματοποίηση συναλλαγών μεταξύ εταιρειών και μεγάλο μέρος αυτών είναι σε χαρτί ή σε ημιδομημένες μορφές, όπως αρχεία PDF και εικόνες από χαρτί/έντυπα. Προκειμένου να διαχειριστούν αποτελεσματικά αυτές τις πληροφορίες, οι εταιρείες εξάγουν και αποθηκεύουν τις σχετικές πληροφορίες που περιέχονται σε αυτά τα έγγραφα. Παραδοσιακά αυτό επιτυγχάνεται με τη μη αυτόματη εξαγωγή των σχετικών πληροφοριών και την εισαγωγή τους σε μια βάση δεδομένων, η οποία είναι μια εντατική και δαπανηρή διαδικασία.

Η ψηφιοποίηση αποδείξεων αντιμετωπίζει την πρόκληση της αυτόματης εξαγωγής πληροφοριών από μια απόδειξη.

Η εξαγωγή βασικών πληροφοριών από αποδείξεις και η μετατροπή τους σε δομημένα έγγραφα μπορεί να εξυπηρετήσει πολλές εφαρμογές και υπηρεσίες, όπως αποτελεσματική αρχειοθέτηση, γρήγορη δημιουργία ευρετηρίου και ανάλυση εγγράφων. Διαδραματίζουν κρίσιμους ρόλους στον εξορθολογισμό των διαδικασιών εντατικών εγγράφων και της αυτοματοποίησης γραφείου σε πολλούς χρηματοοικονομικούς, λογιστικούς και φορολογικούς τομείς.

Αυτοματοποίηση Ψηφιοποίησης Παραλαβών με OCR και Deep Learning

Χρειάζεται ένα ισχυρό απόδειξη OCR or σαρωτής αποδείξεων για εξαγωγή δεδομένων από αποδείξεις; Ρίξτε μια ματιά στα Nanonets API OCR απόδειξης!


Ποιος θα βρει χρήσιμη την Ψηφιοποίηση Αποδείξεων;

Ακολουθούν μερικοί τομείς στους οποίους η ψηφιοποίηση παραλαβών μπορεί να έχει τεράστιο αντίκτυπο:

Αυτοματοποίηση πληρωτέων και εισπρακτέων λογαριασμών

Ο υπολογισμός των πληρωτέων λογαριασμών (AP) και των εισπρακτέων λογαριασμών (ARs) είναι δαπανηρός, χρονοβόρος και μπορεί να οδηγήσει σε σύγχυση μεταξύ διαχειριστών, πελατών και πωλητών. Με την ψηφιοποίηση, οι εταιρείες μπορούν να εξαλείψουν αυτά τα μειονεκτήματα και μπορούν να έχουν περισσότερα πλεονεκτήματα – Αυξημένη διαφάνεια, ανάλυση δεδομένων, βελτιωμένο κεφάλαιο κίνησης και ευκολότερη παρακολούθηση.

Βελτιστοποίηση εφοδιαστικής αλυσίδας

Οι αλυσίδες εφοδιασμού αποτελούν τη ραχοκοκαλιά της σωστής λειτουργίας πολλών επιχειρήσεων. Η διαχείριση εργασιών, ροών πληροφοριών και ροών προϊόντων είναι το κλειδί για τη διασφάλιση του πλήρους ελέγχου της προσφοράς και της παραγωγής. Αυτό είναι απαραίτητο εάν οι οργανισμοί θέλουν να τηρούν τους χρόνους παράδοσης και να ελέγχουν το κόστος παραγωγής.

Οι εταιρείες που πραγματικά ακμάζουν αυτές τις μέρες έχουν κάτι σημαντικό κοινό: μια ψηφιοποιημένη αλυσίδα εφοδιασμού. 89% εταιρειών με ψηφιακές αλυσίδες εφοδιασμού λαμβάνουν τέλειες παραγγελίες από διεθνείς προμηθευτές, διασφαλίζοντας την έγκαιρη παράδοση. Ένα από τα βασικά στοιχεία της υλοποίησης της επόμενης γενιάς ψηφιακής Εφοδιαστικής Αλυσίδας 4.0, είναι η αυτοματοποίηση της συλλογής και διαχείρισης δεδομένων και πολλά από αυτά τα δεδομένα είναι η μορφή αποδείξεων και τιμολόγια. Η μη αυτόματη καταχώριση αποδείξεων λειτουργεί ως εμπόδιο σε όλη την αλυσίδα εφοδιασμού και οδηγεί σε περιττές καθυστερήσεις. Εάν αυτή η επεξεργασία αποδείξεων ψηφιοποιηθεί, μπορεί να οδηγήσει σε σημαντικά κέρδη σε χρόνο και αποτελεσματικότητα.


Έχετε κατά νου κάποιο πρόβλημα OCR; Θέλετε να ψηφιοποιήσετε τιμολόγια, PDF ή πινακίδες; Κατευθυνθείτε προς Νανοδίκτυα και δημιουργήστε δωρεάν μοντέλα OCR!


Γιατί είναι δύσκολο πρόβλημα;

Η ψηφιοποίηση των αποδείξεων είναι δύσκολη αφού οι αποδείξεις έχουν πολλές παραλλαγές και μερικές φορές είναι χαμηλής ποιότητας. Η σάρωση αποδείξεων εισάγει επίσης αρκετά τεχνουργήματα στο ψηφιακό μας αντίγραφο. Αυτά τα τεχνουργήματα θέτουν πολλές προκλήσεις αναγνωσιμότητας.

Αυτοματοποίηση Ψηφιοποίησης Παραλαβών με OCR και Deep Learning

Ακολουθεί μια λίστα με μερικά πράγματα που καθιστούν δύσκολο το σπάσιμο του προβλήματος

  • Χειρόγραφο κείμενο
  • Μικρές γραμματοσειρές
  • Θορυβώδεις εικόνες
  • Ξεθωριασμένες εικόνες
  • Κίνηση και κούνημα της κάμερας
  • Υδατογραφήματα
  • ρυτίδες
  • Ξεθωριασμένο κείμενο

Ένας παραδοσιακός αγωγός ψηφιοποίησης παραλαβών

Ένας τυπικός αγωγός για αυτό το είδος μιας από άκρο σε άκρο προσέγγιση περιλαμβάνει:

  • Προεπεξεργασία
  • Οπτική αναγνώριση χαρακτήρων
  • Εξαγωγή πληροφοριών
  • Απόρριψη δεδομένων
Αυτοματοποίηση Ψηφιοποίησης Παραλαβών με OCR και Deep Learning

Ας βουτήξουμε βαθύτερα σε κάθε τμήμα του αγωγού. Το πρώτο βήμα της διαδικασίας είναι η προεπεξεργασία.

Προεπεξεργασία

Οι περισσότερες σαρωμένες αποδείξεις είναι θορυβώδεις και έχουν τεχνουργήματα και, επομένως, για να λειτουργούν καλά το OCR και τα συστήματα εξαγωγής πληροφοριών, είναι απαραίτητη η προεπεξεργασία των αποδείξεων. Οι συνήθεις μέθοδοι προεπεξεργασίας περιλαμβάνουν – Διαβάθμιση του γκρι, Κατώφλι (Δυαδοποίηση) και Αφαίρεση Θορύβου.

Η κλίμακα του γκρι είναι απλώς η μετατροπή μιας εικόνας RGB σε μια εικόνα σε κλίμακα του γκρι.

Η αφαίρεση θορύβου συνήθως περιλαμβάνει την αφαίρεση του θορύβου από αλάτι και πιπέρι ή του θορύβου Gaussian.

Οι περισσότεροι κινητήρες OCR λειτουργούν καλά σε ασπρόμαυρες εικόνες. Αυτό μπορεί να επιτευχθεί με όριο, που είναι η εκχώρηση τιμών εικονοστοιχείων σε σχέση με την τιμή κατωφλίου που παρέχεται. Κάθε τιμή pixel συγκρίνεται με την τιμή κατωφλίου. Εάν η τιμή του εικονοστοιχείου είναι μικρότερη από το όριο, ορίζεται στο 0, διαφορετικά ορίζεται σε μια μέγιστη τιμή (γενικά 255).

Το OpenCV παρέχει διάφορες επιλογές κατωφλίου – Απλό κατώφλι, Προσαρμοστικό κατώφλι

Αυτοματοποίηση Ψηφιοποίησης Παραλαβών με OCR και Deep Learning

Οπτική αναγνώριση χαρακτήρων

Το επόμενο βήμα στον αγωγό είναι OCR. Χρησιμοποιείται για την ανάγνωση κειμένου από εικόνες, όπως ένα σαρωμένο έγγραφο ή μια εικόνα. Αυτή η τεχνολογία χρησιμοποιείται για τη μετατροπή, σχεδόν κάθε είδους εικόνων που περιέχουν γραπτό κείμενο (δακτυλογραφημένο, χειρόγραφο ή τυπωμένο) σε δεδομένα κειμένου αναγνώσιμα από μηχανή.. Το OCR περιλαμβάνει 2 βήματα – ανίχνευση κειμένου και αναγνώριση κειμένου.

Αυτοματοποίηση Ψηφιοποίησης Παραλαβών με OCR και Deep Learning

Υπάρχουν διάφορες προσεγγίσεις για το OCR. Η συμβατική υπολογιστική προσέγγιση Vision είναι να

  • Χρήση φίλτρων για τον διαχωρισμό των χαρακτήρων από το φόντο
  • Εφαρμόστε ανίχνευση περιγράμματος για να αναγνωρίσετε τους φιλτραρισμένους χαρακτήρες
  • Χρησιμοποιήστε την ταξινόμηση mage για να αναγνωρίσετε τους χαρακτήρες

Η εφαρμογή φίλτρων και ταξινόμησης εικόνων είναι αρκετά απλή, (σκεφτείτε την ταξινόμηση MNIST χρησιμοποιώντας SVN), αλλά η αντιστοίχιση περιγράμματος είναι ένα πολύ δύσκολο πρόβλημα και απαιτεί πολλή χειροκίνητη προσπάθεια και δεν μπορεί να γενικευτεί.

Ακολουθούν οι προσεγγίσεις Deep Learning. Το Deep Learning γενικεύει πολύ καλά. Μία από τις πιο δημοφιλείς προσεγγίσεις για την ανίχνευση κειμένου είναι η EAST. Το EAST (Αποτελεσματικός ανιχνευτής κειμένου σκηνής με ακρίβεια) είναι μια απλή αλλά ισχυρή προσέγγιση για την ανίχνευση κειμένου. Το δίκτυο EAST είναι στην πραγματικότητα μια έκδοση του γνωστού U-Net, το οποίο είναι καλό για τον εντοπισμό χαρακτηριστικών διαφορετικών μεγεθών.

Αυτοματοποίηση Ψηφιοποίησης Παραλαβών με OCR και Deep Learning

CRNN και STN-OCR Τα (Spatial Transformer Networks) είναι άλλα δημοφιλή χαρτιά που εκτελούν OCR.

Εξαγωγή πληροφοριών

Η πιο κοινή προσέγγιση στο πρόβλημα της εξαγωγής πληροφοριών είναι βασισμένη σε κανόνες, όπου οι κανόνες γράφονται μετά την OCR για την εξαγωγή των απαιτούμενων πληροφοριών. Αυτή είναι μια ισχυρή και ακριβής προσέγγιση, αλλά απαιτεί να γράψετε νέους κανόνες ή πρότυπα για έναν νέο τύπο εγγράφου.

Αρκετοί βασισμένοι σε κανόνες τιμολόγιο συστήματα ανάλυσης υπάρχουν στη βιβλιογραφία.

  • Intellix από την DocuWare απαιτεί ένα πρότυπο σχολιασμένο με σχετικά πεδία.
  • My-i χρησιμοποιεί ειδικά σχεδιασμένους κανόνες διαμόρφωσης για κάθε πρότυπο

Οι μέθοδοι που βασίζονται σε κανόνες βασίζονται σε μεγάλο βαθμό στους προκαθορισμένους κανόνες προτύπων για την εξαγωγή πληροφοριών από συγκεκριμένες διατάξεις τιμολογίων

Μια προσέγγιση που έχει γίνει πολύ συνηθισμένη τα τελευταία χρόνια είναι η χρήση ενός τυπικού πλαισίου ανίχνευσης αντικειμένων όπως το YOLO, Faster R-CNN για την αναγνώριση πεδίων. Έτσι, αντί για ανίχνευση καθαρού κειμένου, η αναγνώριση πεδίου και η ανίχνευση κειμένου εκτελούνται ταυτόχρονα. Αυτό κάνει τη σωλήνωση μικρότερη (Ανίχνευση κειμένου→ Αναγνώριση → Εξαγωγή σε ανίχνευση → Αναγνώριση). Δεν χρειάζεται να γράψετε κανέναν κανόνα αφού ο ανιχνευτής αντικειμένων μαθαίνει να αναγνωρίζει αυτά τα πεδία.

Απόρριψη δεδομένων

Μόλις εξάγετε τις πληροφορίες σας, η απόρριψη δεδομένων μπορεί να γίνει όπως απαιτεί η περίπτωση χρήσης μας. Συχνά μια μορφή JSON για την αποθήκευση των πληροφοριών των πεδίων είναι βολική. Αυτά τα αρχεία JSON μπορούν εύκολα να μετατραπούν σε αρχεία XML, φύλλα Excel, αρχεία CSV ή αρχεία απλού κειμένου, ανάλογα με το ποιος θέλει να εργαστεί με τα δεδομένα και πώς.

Ψηφιοποίηση παραλαβής με χρήση τεσεράκτ

Τώρα που έχουμε μια ιδέα για τον αγωγό, ας την εφαρμόσουμε σε ένα παράδειγμα απόδειξης. Αυτή είναι η απόδειξη με την οποία θα εργαστούμε. Στόχος μας στο τέλος αυτού είναι να εξαγάγουμε το όνομα του εστιατορίου, τα είδη που αγοράστηκαν με την ποσότητα και το κόστος τους, την ημερομηνία αγοράς και το σύνολο.

Αυτοματοποίηση Ψηφιοποίησης Παραλαβών με OCR και Deep Learning

Προεπεξεργασία

Δεδομένου ότι η απόδειξή μας είναι ήδη σε κλίμακα του γκρι και δεν υπάρχει πολύς θόρυβος, θα κάνω μόνο thresholding εφαρμόζοντας ένα όριο 210. Μπορείτε να τροποποιήσετε την τιμή για να έχετε το σωστό αποτέλεσμα. Πολύ λιγότερο και θα χάσετε πολλά. Πολύ κοντά στο 255 θα τα κάνει όλα μαύρα.

Θα πρέπει πρώτα να εγκαταστήσουμε το OpenCV.

pip install opencv-python

Εδώ είναι ο κωδικός για το όριο.

import cv2
import numpy as np
from matplotlib import pyplot as plt # Read the image
img = cv2.imread('receipt.jpg',0)
# Simple thresholding
ret,thresh1 = cv2.threshold(img,210,255,cv2.THRESH_BINARY)
cv2.imshow(thresh1,’gray’)

Έτσι φαίνεται η έξοδος.

Αυτοματοποίηση Ψηφιοποίησης Παραλαβών με OCR και Deep Learning

Ανίχνευση κειμένου

Για την ανίχνευση κειμένου θα χρησιμοποιήσω μια βιβλιοθήκη ανοιχτού κώδικα που ονομάζεται τεσεράκτ. Είναι η οριστική βιβλιοθήκη OCR και έχει αναπτυχθεί από την Google από το 2006. Η τελευταία έκδοση του Tesseract (v4) υποστηρίζει OCR που βασίζεται σε βαθιά μάθηση που είναι σημαντικά πιο ακριβής. Ο ίδιος ο υποκείμενος κινητήρας OCR χρησιμοποιεί ένα δίκτυο μακράς βραχυπρόθεσμης μνήμης (LSTM).

Πρώτα ας εγκαταστήσουμε την πιο πρόσφατη έκδοση του Tesseract.

Για το ubuntu

sudo apt install tesseract-ocr

Για macOS

brew install tesseract --HEAD

Για τα Windows, μπορείτε να κάνετε λήψη των δυαδικών αρχείων από αυτό σελίδα

Επαληθεύστε την έκδοση tesseract.

tesseract -v

Έξοδος -

tesseract 4.0.0-beta.3
leptonica-1.76.0
libjpeg 9c : libpng 1.6.34 : libtiff 4.0.9 : zlib 1.2.11
Found AVX512BW
Found AVX512F
Found AVX2
Found AVX
Found SSE

Εγκαταστήστε τις δεσμεύσεις Tesseract + Python

Τώρα που έχουμε εγκαταστήσει το δυαδικό Tesseract, τώρα πρέπει να εγκαταστήσουμε τις δεσμεύσεις Tesseract + Python ώστε τα σενάρια Python μας να μπορούν να επικοινωνούν με το Tesseract. Πρέπει επίσης να εγκαταστήσουμε το πακέτο γερμανικής γλώσσας αφού η απόδειξη είναι στα γερμανικά.

pip install pytesseract
sudo apt-get install tesseract-ocr-deu

Τώρα που εγκαταστήσαμε το Tesseract, ας αρχίσουμε να εντοπίζουμε τα πλαίσια κειμένου.τεσεράκτ έχει ενσωματωμένη λειτουργία για την ανίχνευση πλαισίων κειμένου.

import pytesseract
from pytesseract import Output
import cv2 img = cv2.imread('receipt.jpg')
d = pytesseract.image_to_data(img, output_type=Output.DICT)
n_boxes = len(d['level'])
for i in range(n_boxes): (x, y, w, h) = (d['left'][i], d['top'][i], d['width'][i], d['height'][i]) img = cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 2) cv2.imshow(img,'img')

Ακολουθεί η έξοδος του κώδικα ανίχνευσης κειμένου.

Αυτοματοποίηση Ψηφιοποίησης Παραλαβών με OCR και Deep Learning

Αναγνώριση κειμένου

Θα κάνουμε Tesseract για να εκτελέσουμε OCR. Το Tesseract 4 χρησιμοποιεί μια προσέγγιση βαθιάς μάθησης που αποδίδει σημαντικά καλύτερα από τις περισσότερες άλλες εφαρμογές ανοιχτού κώδικα.

Εδώ είναι ο κωδικός αναγνώρισης κειμένου. Αν και είναι πολύ απλό με μία επένδυση, υπάρχουν πολλά που πάνε κάτω από την κουκούλα.

extracted_text = pytesseract.image_to_string(img, lang = 'deu')

Εδώ είναι η ακατέργαστη παραγωγή.

'BerghotelnGrosse Scheideggn3818 GrindelwaldnFamilie R.MüllernnRech.Nr. 4572 30.07.2007/13:29: 17nBar Tisch 7/01n2xLatte Macchiato &ä 4.50 CHF 9,00n1xGloki a 5.00 CH 5.00n1xSchweinschnitzel ä 22.00 CHF 22.00nIxChässpätz 1 a 18.50 CHF 18.50nnTotal: CHF 54.50nnIncl. 7.6% MwSt 54.50 CHF: 3.85nnEntspricht in Euro 36.33 EURnEs bediente Sie: UrsulannMwSt Nr. : 430 234nTel.: 033 853 67 16nFax.: 033 853 67 19nE-mail: grossescheidegs@b luewin. ch'

Εδώ είναι η μορφοποιημένη έξοδος

Berghotel
Grosse Scheidegg
3818 Grindelwald
Familie R.Müller Rech.Nr. 4572 30.07.2007/13:29: 17
Bar Tisch 7/01
2xLatte Macchiato &ä 4.50 CHF 9,00
1xGloki a 5.00 CH 5.00
1xSchweinschnitzel ä 22.00 CHF 22.00
IxChässpätz 1 a 18.50 CHF 18.50 Total: CHF 54.50 Incl. 7.6% MwSt 54.50 CHF: 3.85 Entspricht in Euro 36.33 EUR
Es bediente Sie: Ursula MwSt Nr. : 430 234
Tel.: 033 853 67 16
Fax.: 033 853 67 19
E-mail: grossescheidegs@b luewin. ch

Ανάγκη ψηφιοποίησης εγγράφων, αποδείξεων ή τιμολόγια αλλά πολύ τεμπέλης για κωδικοποίηση; Κατευθυνθείτε προς Νανοδίκτυα και δημιουργήστε δωρεάν μοντέλα OCR!


Εξαγωγή πληροφοριών

Όπως ανέφερα προηγουμένως, ο πιο συνηθισμένος τρόπος εξαγωγής πληροφοριών είναι μια προσέγγιση βασισμένη σε κανόνες.

Όλες οι αποδείξεις από αυτό το ξενοδοχείο θα ακολουθούν μια σταθερή δομή και οι πληροφορίες εμφανίζονται σε διαφορετικές γραμμές. Αυτό αντικατοπτρίζεται στην έξοδο OCR όπου οι νέες γραμμές αντιπροσωπεύονται με 'n'. Χρησιμοποιώντας αυτά, ας γράψουμε ένα σύνολο κανόνων για την εξαγωγή πληροφοριών. Αυτό το σύνολο κανόνων μπορεί να εφαρμοστεί σε οποιαδήποτε απόδειξη από αυτό το ξενοδοχείο, καθώς θα ακολουθούν την ίδια μορφή.

Αυτοματοποίηση Ψηφιοποίησης Παραλαβών με OCR και Deep Learning

Θα εξαγάγω το όνομα του εστιατορίου, την ημερομηνία συναλλαγής, τα είδη που αγοράστηκαν, την ποσότητα τους, το συνολικό κόστος ανά είδος και το συνολικό ποσό χρησιμοποιώντας απλές εντολές python και κανονικές εκφράσεις.

Αυτό είναι ένα λεξικό όπου θα αποθηκεύω τις εξαγόμενες πληροφορίες.

receipt _ocr = {}

Το πρώτο βήμα είναι να εξαγάγετε το όνομα του εστιατορίου. Η τοποθεσία του ονόματος του εστιατορίου θα είναι σταθερή σε όλες τις αποδείξεις και αυτό είναι στις 2 πρώτες γραμμές. Ας το χρησιμοποιήσουμε για να δημιουργήσουμε έναν κανόνα.

splits = extracted_text.splitlines()
restaurant_name = splits[0] + '' + splits[1]

Στη συνέχεια, εξάγουμε την ημερομηνία της συναλλαγής. Το regex ημερομηνίας είναι αρκετά απλό.


import re
# regex for date. The pattern in the receipt is in 30.07.2007 in DD:MM:YYYY date_pattern = r'(0[1-9]|[12][0-9]|3[01])[.](0[1-9]|1[012])[.](19|20)dd'
date = re.search(date_pattern, extracted_text).group()
receipt_ocr['date'] = date
print(date)

Έξοδος -

‘30.10.2007’

Στη συνέχεια εξάγουμε όλες τις πληροφορίες που σχετίζονται με τα είδη και το κόστος.

Τα είδη περιέχουν ένα CHF που είναι το ελβετικό φράγκο. Ας εντοπίσουμε όλες τις εμφανίσεις CHF. Τώρα μπορούμε να ανιχνεύσουμε γραμμές αναγνωρίζοντας τους χαρακτήρες μεταξύ 2 n και περιέχουν ένα CHF. Εντοπίζω το σύνολο και εδώ.

# get lines with chf
lines_with_chf = []
for line in splits: if re.search(r'CHF',line): lines_with_chf.append(line) print(lines_with_chf)

Έξοδος -

2xLatte Macchiato &ä 4.50 CHF 9,00
1xSchweinschnitzel ä 22.00 CHF 22.00
IxChässpätz 1 a 18.50 CHF 18.50
Total: CHF 54.50
Incl. 7.6% MwSt 54.50 CHF: 3.85

Εάν παρατηρήσετε, το Tesseract έχασε ένα στοιχείο επειδή εντόπισε CH αντί για CHF. Θα καλύψω προκλήσεις στα παραδοσιακά συστήματα OCR στην επόμενη ενότητα.

# get items, total, ignore Incl
items = []
for line in lines_with_chf: print(line) if re.search(r'Incl',line): continue if re.search(r'Total', line): total = line else: items.append(line) # Get Name, quantity and cost all_items = {}
for item in items: details = item.split() quantity_name = details[0] quantity = quantity_name.split('x')[0] name = quantity_name.split('x')[1] cost = details[-1] all_items[name] = {'quantity':quantity, 'cost':cost} total = total.split('CHF')[-1] # Store the results in the dict
receipt_ocr['items'] = all_items
receipt_ocr[‘total’] = total import json receipt_json = json.dumps(receipt_ocr)
print(receipt_json)

Εκτύπωση της εξόδου JSON μας –

{'date': '30.07.2007', 'items': {'Chässpätz': {'cost': '18.50', 'quantity': 'I'}, 'Latte': {'cost': '9,00', 'quantity': '2'}, 'Schweinschnitzel': {'cost': '22.00', 'quantity': '1'}}, 'total': ' 54.50'}

Όλες οι βασικές πληροφορίες έχουν εξαχθεί και απορριφθεί στο receipt_json..

Προβλήματα με τη συμβατική προσέγγιση

Αν και εξάγαμε τις πληροφορίες, ο παραπάνω αγωγός χάνει μερικά πράγματα και δεν είναι βέλτιστος. Για κάθε νέα απόδειξη πρέπει να γράψουμε ένα νέο σύνολο κανόνων και επομένως δεν είναι επεκτάσιμη.

Θα μπορούσαν να υπάρχουν πολλές παραλλαγές στις διατάξεις, τα μεγέθη γραμματοσειρών και γραμματοσειρών, χειρόγραφα έγγραφα κ.λπ. Οι διαφορές στη διάταξη θα επηρεάσουν τις προσεγγίσεις που βασίζονται σε κανόνες και αυτές πρέπει να ληφθούν υπόψη, κάτι που γίνεται πολύ κουραστικό. Οι διαφορές στη γραμματοσειρά και τα μεγέθη γραμματοσειρών καθιστούν δύσκολη την αναγνώριση και εξαγωγή πληροφοριών.

Γιατί είναι καλύτερο το πρόγραμμα Deep Learning από άκρο σε άκρο;

Ένα από τα μεγαλύτερα προβλήματα με την τυπική προσέγγιση είναι η έλλειψη γενίκευσης. Οι προσεγγίσεις που βασίζονται σε κανόνες δεν μπορούν να γενικευτούν και πρέπει να γραφτούν νέοι κανόνες για οποιοδήποτε νέο πρότυπο. Επίσης, τυχόν αλλαγές ή παραλλαγές σε ένα υπάρχον πρότυπο πρέπει επίσης να ληφθούν υπόψη.

Μια προσέγγιση Deep Learning θα μπορεί να μάθει αυτούς τους κανόνες και θα μπορεί να γενικεύει εύκολα σε διαφορετικές διατάξεις, υπό την προϋπόθεση ότι τις έχουμε στο σύνολο δεδομένων εκπαίδευσης.

Βαθιά Μάθηση και Εξαγωγή Πληροφοριών

Εδώ εξετάζω μερικές εργασίες που χρησιμοποιούν προσεγγίσεις Deep Learning από άκρο σε άκρο.

ΓΛΥΚΟΥΛΗΣ

CUTIE: Εκμάθηση κατανόησης εγγράφων με Convolutional Universal Text Extractor

Αυτό το έγγραφο προτείνει μια μέθοδος εξαγωγής βασικών πληροφοριών βασισμένη στη μάθηση με περιορισμένες απαιτήσεις σε ανθρώπινους πόρους. Συνδυάζει τις πληροφορίες τόσο από τη σημασιολογική σημασία όσο και από τη χωρική κατανομή των κειμένων σε έγγραφα. Το προτεινόμενο μοντέλο τους, Convolutional Universal Text Information Extractor (CUTIE), εφαρμόζει συνελικτικά νευρωνικά δίκτυα σε πλέγματα κειμένων όπου τα κείμενα είναι ενσωματωμένα ως χαρακτηριστικά με σημασιολογικές υποδηλώσεις.

Αυτοματοποίηση Ψηφιοποίησης Παραλαβών με OCR και Deep Learning

Το προτεινόμενο μοντέλο, αντιμετωπίζει το πρόβλημα εξαγωγής βασικών πληροφοριών από

  • Πρώτα δημιουργώντας πλέγματα κειμένων με το προτεινόμενο μέθοδος χαρτογράφησης θέσης πλέγματος. Για τη δημιουργία των δεδομένων πλέγματος για το συνελικτικό νευρωνικό δίκτυο, η εικόνα του σαρωμένου εγγράφου επεξεργάζεται από μια μηχανή OCR για να αποκτήσει τα κείμενα και τις απόλυτες/σχετικές θέσεις τους. Τα κείμενα αντιστοιχίζονται από την αρχική εικόνα σαρωμένου εγγράφου στο πλέγμα-στόχο, έτσι ώστε το αντιστοιχισμένο πλέγμα να διατηρεί την αρχική χωρική σχέση μεταξύ των κειμένων, ακόμη πιο κατάλληλο να χρησιμοποιηθεί ως είσοδος για το συνελικτικό νευρωνικό δίκτυο.
  • Στη συνέχεια, το μοντέλο CUTIE εφαρμόζεται στα πλέγματα κειμένων. Οι πλούσιες σημασιολογικές πληροφορίες κωδικοποιούνται από τα πλέγματα κειμένων στο αρχικό στάδιο του συνελικτικού νευρωνικού δικτύου με ένα στρώμα ενσωμάτωσης λέξης.

Το CUTIE επιτρέπει την ταυτόχρονη εξέταση τόσο των σημασιολογικών πληροφοριών όσο και των χωρικών πληροφοριών των κειμένων στη σαρωμένη εικόνα εγγράφου και μπορεί να φτάσει σε ένα νέο αποτέλεσμα τελευταίας τεχνολογίας για την εξαγωγή βασικών πληροφοριών.

Μοντέλο CUTIE

Διαθέτουν 2 μοντέλα CUTIE-A και CUTIE-B. το προτεινόμενο CUTIE-A είναι ένα συνελικτικό νευρωνικό δίκτυο υψηλής χωρητικότητας που συγχωνεύει χαρακτηριστικά πολλαπλής ανάλυσης χωρίς να χάνει χαρακτηριστικά υψηλής ανάλυσης. Το CUTIE-B είναι ένα συνελικτικό δίκτυο με αστρική συνέλιξη για μεγέθυνση του οπτικού πεδίου και μονάδα Atrous Spatial Pyramid Pooling (ASPP) για την καταγραφή πλαισίων πολλαπλής κλίμακας. Τόσο το CUTIE-A όσο και το CUITE-B διεξάγουν τη διαδικασία κωδικοποίησης σημασιολογικού νοήματος με ένα στρώμα ενσωμάτωσης λέξης στο αρχικό στάδιο.

Η εργασία του CUTIE μοιάζει με την εργασία σημασιολογικής τμηματοποίησης. Το αντιστοιχισμένο πλέγμα περιέχει διάσπαρτα σημεία δεδομένων (κείμενα κειμένου) σε αντίθεση με τις εικόνες που είναι διασκορπισμένες με pixel. Τα κείμενα των κλειδιών με αντιστοίχιση θέσης πλέγματος βρίσκονται είτε κοντά είτε μακριά το ένα από το άλλο λόγω διαφορετικών τύπων διάταξης εγγράφων. Επομένως, η ενσωμάτωση της ικανότητας επεξεργασίας πλαισίου πολλαπλής κλίμακας ωφελεί το δίκτυο.

Σύνολο δεδομένων

Η προτεινόμενη μέθοδος αξιολογείται στην ισχυρή πρόκληση ανάγνωσης ICDAR 2019 στο σύνολο δεδομένων SROIE και είναι επίσης σε ένα αυτο-δημιουργημένο σύνολο δεδομένων με 3 τύπους σαρωμένων εικόνων εγγράφων.

Η Σύνολο δεδομένων ICDAR 2019 SROIE χρησιμοποιείται το οποίο περιέχει 1000 ολόκληρες σαρωμένες εικόνες απόδειξης. Κάθε εικόνα απόδειξης περιέχει περίπου τέσσερα βασικά πεδία κειμένου, όπως όνομα αγαθών, τιμή μονάδας, ημερομηνία και συνολικό κόστος. Το κείμενο που σχολιάζεται στο σύνολο δεδομένων αποτελείται κυρίως από ψηφία και αγγλικούς χαρακτήρες.

Το σύνολο δεδομένων που έχει κατασκευαστεί από τον εαυτό του περιέχει 4 σχολιασμένα σαρωμένα ισπανικά έγγραφα αποδείξεων, συμπεριλαμβανομένων αποδείξεων ταξί, αποδείξεων ψυχαγωγίας γευμάτων (ME) και αποδείξεων ξενοδοχείων, με 484 διαφορετικές κατηγορίες βασικών πληροφοριών.

Αποτελέσματα

Η συνολική απόδοση αξιολογείται με τη χρήση μέσης ακρίβειας (AP – και μετριέται ως προς την ακρίβεια ανά κατηγορία στις 9 τάξεις,.) και της ήπιας μέσης ακρίβειας (softAP) όπου η πρόβλεψη μιας κλάσης βασικών πληροφοριών προσδιορίζεται ως σωστή εάν είναι θετικές αλήθειες προβλέπονται σωστά ακόμα κι αν στην τελική πρόβλεψη περιλαμβάνονται κάποια ψευδώς θετικά. Η κοινή ανάλυση του AP και του softAP παρέχει καλύτερη κατανόηση της απόδοσης του μοντέλου.

Μπορείτε να δείτε τα αποτελέσματα στον παρακάτω πίνακα.

Αυτοματοποίηση Ψηφιοποίησης Παραλαβών με OCR και Deep Learning

GCN για VRD

Συνέλιξη γραφήματος για εξαγωγή πολυτροπικών πληροφοριών από οπτικά πλούσια έγγραφα

Αυτή η εργασία εισάγει ένα μοντέλο που βασίζεται σε συνέλιξη γραφήματος για να συνδυάσει κειμενικές και οπτικές πληροφορίες που παρουσιάζονται σε Visually Rich έγγραφα (VRDs). Οι ενσωματώσεις γραφημάτων εκπαιδεύονται για να συνοψίζουν το περιβάλλον ενός τμήματος κειμένου στο έγγραφο και συνδυάζονται περαιτέρω με ενσωματώσεις κειμένου για εξαγωγή οντοτήτων.

Σε αυτό το χαρτί αποκαλούν ένα έγγραφο VRD και θα το επιμείνω.

Κάθε έγγραφο μοντελοποιείται ως γράφημα τμημάτων κειμένου, όπου κάθε τμήμα κειμένου αποτελείται από τη θέση του τμήματος και το κείμενο μέσα σε αυτό. Το γράφημα αποτελείται από κόμβους που αντιπροσωπεύουν τμήματα κειμένου και άκρες που αντιπροσωπεύουν οπτικές εξαρτήσεις, όπως σχετικά σχήματα και απόσταση, μεταξύ δύο κόμβων.

Αυτοματοποίηση Ψηφιοποίησης Παραλαβών με OCR και Deep Learning

Οι ενσωματώσεις γραφημάτων που παράγονται από τη συνέλιξη γραφήματος συνοψίζουν το πλαίσιο ενός τμήματος κειμένου στο έγγραφο, τα οποία συνδυάζονται περαιτέρω με ενσωματώσεις κειμένου για εξαγωγή οντοτήτων χρησιμοποιώντας ένα τυπικό μοντέλο BiLSTM-CRF.

Μοντέλο

Το μοντέλο κωδικοποιεί πρώτα κάθε τμήμα κειμένου στο έγγραφο σε ενσωμάτωση γραφήματος, χρησιμοποιώντας πολλαπλά επίπεδα συνέλιξης γραφήματος. Η ενσωμάτωση αντιπροσωπεύει τις πληροφορίες στο τμήμα κειμένου δεδομένου του οπτικού και κειμενικού του πλαισίου. Το οπτικό πλαίσιο είναι η διάταξη του εγγράφου και οι σχετικές θέσεις του μεμονωμένου τμήματος σε άλλα τμήματα. Το κείμενο κειμένου είναι το σύνολο των πληροφοριών κειμένου στο έγγραφο συνολικά. Το μοντέλο μαθαίνει να εκχωρεί υψηλότερα βάρη σε κείμενα από γειτονικά τμήματα. Στη συνέχεια, το χαρτί συνδυάζει τις ενσωματώσεις γραφημάτων με ενσωματώσεις κειμένου και εφαρμόζει ένα τυπικό μοντέλο BiLSTM-CRF για εξαγωγή οντοτήτων.

Αυτοματοποίηση Ψηφιοποίησης Παραλαβών με OCR και Deep Learning

Σύνολο δεδομένων

Χρησιμοποιούνται δύο σύνολα δεδομένων πραγματικού κόσμου. Είναι τα τιμολόγια φόρου προστιθέμενης αξίας (ΦΠΑ) και οι αποδείξεις διεθνών αγορών (IPR). Το VATI αποτελείται από 3000 φωτογραφίες που ανέβηκαν από χρήστες και έχει 16 οντότητες ακριβώς. Παραδείγματα οντοτήτων είναι τα ονόματα του αγοραστή/πωλητή, η ημερομηνία και το ποσό φόρου. Τα τιμολόγια είναι στα κινέζικα και έχει σταθερό πρότυπο, καθώς είναι εθνικό τυπικό τιμολόγιο.

Το IPR είναι ένα σύνολο δεδομένων 1500 σαρωμένων εγγράφων αποδείξεων στα Αγγλικά, το οποίο έχει 4 οντότητες με ακρίβεια (Αριθμός Τιμολογίου, Όνομα Προμηθευτή, Όνομα Πληρωτή και Συνολικό Ποσό). Υπάρχουν 146 πρότυπα για τις αποδείξεις.

Αποτελέσματα

Η βαθμολογία F1 χρησιμοποιείται για την αξιολόγηση των επιδόσεων του μοντέλου σε όλα τα πειράματα. Ο παρακάτω πίνακας έχει τα αποτελέσματα σε 2 σύνολα δεδομένων.

Αυτοματοποίηση Ψηφιοποίησης Παραλαβών με OCR και Deep Learning

Η γραμμή βάσης I εφαρμόζει το BiLSTM-CRF σε κάθε τμήμα κειμένου, όπου κάθε τμήμα κειμένου είναι μια μεμονωμένη πρόταση.

Η γραμμή βάσης II εφαρμόζει το μοντέλο επισήμανσης στα συνενωμένα τμήματα κειμένου.

Ταχύτερη-RCNN + AED

Deep Learning Approach for Recognition Recognition

Αυτή η εργασία παρουσιάζει μια προσέγγιση βαθιάς μάθησης για την αναγνώριση σαρωμένων αποδείξεων. Το σύστημα αναγνώρισης έχει δύο κύριες ενότητες: ανίχνευση κειμένου με βάση το Δίκτυο πρότασης κειμένου Connectionist και αναγνώριση κειμένου με βάση τον Κωδικοποιητή-Αποκωδικοποιητή που βασίζεται στην προσοχή. Το σύστημα πέτυχε το 71.9% της βαθμολογίας F1 για εργασία ανίχνευσης και αναγνώρισης.

Ανίχνευση κειμένου

Η δομή CTPN είναι παρόμοια με το Faster R-CNN, με την προσθήκη του στρώματος LSTM. Το μοντέλο δικτύου αποτελείται κυρίως από τρία μέρη: εξαγωγή χαρακτηριστικών από VGG16, αμφίδρομο LSTM και παλινδρόμηση πλαισίου οριοθέτησης

Αυτοματοποίηση Ψηφιοποίησης Παραλαβών με OCR και Deep Learning

Αναγνώριση κειμένου

Ο AED χρησιμοποιείται για την αναγνώριση γραμμών κειμένου. Ο AED διαθέτει δύο κύριες μονάδες: DenseNet για εξαγωγή χαρακτηριστικών από μια εικόνα κειμένου και ένα LSTM σε συνδυασμό με ένα μοντέλο προσοχής για την πρόβλεψη του κειμένου εξόδου.

Αυτοματοποίηση Ψηφιοποίησης Παραλαβών με OCR και Deep Learning

Σύνολο δεδομένων

Χρησιμοποιείται το σύνολο δεδομένων από το SROIE 2019. Διαίρεσαν τα δεδομένα εκπαίδευσης σε εκπαίδευση, επικύρωση και δοκιμή και επέλεξαν τυχαία το 80% των αποδείξεων για εκπαίδευση, το 10% των αποδείξεων για επικύρωση και το υπόλοιπο για τη δοκιμή. Ως αποτέλεσμα 500 αποδείξεις για εκπαίδευση, 63 αποδείξεις για επικύρωση και 63 για δοκιμές.

Αποτελέσματα

Για την ανίχνευση κειμένου, το χαρτί χρησιμοποιεί Tightness-aware Intersection-over-Union (TIoU) Για την αναγνώριση κειμένου, το χαρτί χρησιμοποίησε F1 , Precision και Recall.

Αυτοματοποίηση Ψηφιοποίησης Παραλαβών με OCR και Deep Learning

Ο Πίνακας I δείχνει το αποτέλεσμα του CTPN με τρεις συνθήκες: CTPN στις αρχικές εικόνες. προεπεξεργασία + CTPN, προεπεξεργασία + CTPN + επαλήθευση OCR. Ο Πίνακας 2 δείχνει τα αποτελέσματα του δικτύου AED.

Αυτοματοποίηση Ψηφιοποίησης Παραλαβών με OCR και Deep Learning

Υπάρχει φυσικά ένας ευκολότερος, πιο διαισθητικός τρόπος για να το κάνετε αυτό.


Χρειάζεται ένα ισχυρό απόδειξη OCR για εξαγωγή δεδομένων από αποδείξεις; Ρίξτε μια ματιά στα Nanonets API OCR απόδειξης!


OCR με Nanonets

Ενημέρωση #1: Μόλις κυκλοφορήσαμε το δικό μας απόδειξη OCR προεκπαιδευμένο μοντέλο. Μεταβείτε στη διεύθυνση https://app.nanonets.com και ξεκινήστε τις δοκιμές!

Αυτοματοποίηση Ψηφιοποίησης Παραλαβών με OCR και Deep Learning

Η API OCR Nanonets σας επιτρέπει να δημιουργήσετε μοντέλα OCR με ευκολία. Δεν χρειάζεται να ανησυχείτε για την προεπεξεργασία των εικόνων σας ή να ανησυχείτε για την αντιστοίχιση προτύπων ή για τη δημιουργία μηχανών βάσει κανόνων για να αυξήσετε την ακρίβεια του μοντέλου σας OCR.

Μπορείτε να ανεβάσετε τα δεδομένα σας, να τα σχολιάσετε, να ρυθμίσετε το μοντέλο για να εκπαιδεύσετε και να περιμένετε να λάβετε προβλέψεις μέσω ενός περιβάλλοντος εργασίας χρήστη που βασίζεται σε πρόγραμμα περιήγησης χωρίς να γράψετε ούτε μια γραμμή κώδικα, να ανησυχείτε για τις GPU ή να βρείτε τις σωστές αρχιτεκτονικές για τα μοντέλα βαθιάς μάθησης. Μπορείτε επίσης να αποκτήσετε τις απαντήσεις JSON κάθε πρόβλεψης για να την ενσωματώσετε με τα δικά σας συστήματα και να δημιουργήσετε εφαρμογές με μηχανική εκμάθηση που βασίζονται σε αλγόριθμους τελευταίας τεχνολογίας και μια ισχυρή υποδομή.

Χρήση του GUI: https://app.nanonets.com/

Μπορείτε επίσης να χρησιμοποιήσετε το API Nanonets-OCR ακολουθώντας τα παρακάτω βήματα:

Βήμα 1: Κλωνοποιήστε το Repo, Εγκαταστήστε εξαρτήσεις

git clone https://github.com/NanoNets/nanonets-ocr-sample-python.git
cd nanonets-ocr-sample-python
sudo pip install requests tqdm

Βήμα 2: Αποκτήστε το δωρεάν κλειδί API
Αποκτήστε το δωρεάν κλειδί API σας http://app.nanonets.com/#/keys

Αυτοματοποίηση Ψηφιοποίησης Παραλαβών με OCR και Deep Learning

Βήμα 3: Ορίστε το κλειδί API ως μεταβλητή περιβάλλοντος

export NANONETS_API_KEY=YOUR_API_KEY_GOES_HERE

Βήμα 4: Δημιουργήστε ένα νέο μοντέλο

python ./code/create-model.py

Σημείωση: Αυτό δημιουργεί ένα MODEL_ID που χρειάζεστε για το επόμενο βήμα

Βήμα 5: Προσθέστε το αναγνωριστικό μοντέλου ως μεταβλητή περιβάλλοντος

export NANONETS_MODEL_ID=YOUR_MODEL_ID

Σημείωση: θα λάβετε το YOUR_MODEL_ID από το προηγούμενο βήμα

Βήμα 6: Ανεβάστε τα δεδομένα εκπαίδευσης
Τα δεδομένα εκπαίδευσης βρίσκονται στο images (αρχεία εικόνας) και annotations (σχολιασμοί για τα αρχεία εικόνας)

python ./code/upload-training.py

Βήμα 7: Εκπαίδευση μοντέλου
Μετά τη μεταφόρτωση των εικόνων, αρχίστε να εκπαιδεύετε το μοντέλο

python ./code/train-model.py

Βήμα 8: Λήψη κατάστασης μοντέλου
Το μοντέλο διαρκεί ~ 2 ώρες για να εκπαιδεύσει. Θα λάβετε ένα μήνυμα ηλεκτρονικού ταχυδρομείου μόλις εκπαιδευτεί το μοντέλο. Εν τω μεταξύ, ελέγχετε την κατάσταση του μοντέλου

python ./code/model-state.py

Βήμα 9: Κάντε πρόβλεψη
Μόλις εκπαιδευτεί το μοντέλο. Μπορείτε να κάνετε προβλέψεις χρησιμοποιώντας το μοντέλο

python ./code/prediction.py ./images/151.jpg

Περισσότερες Πληροφορίες

Ενημέρωση:
‌ Προστέθηκε περισσότερο υλικό ανάγνωσης σχετικά με τις πιο πρόσφατες εξελίξεις στην αυτοματοποίηση ψηφιοποίησης αποδείξεων με χρήση OCR και Deep Learning.

Σφραγίδα ώρας:

Περισσότερα από AI και μηχανική μάθηση