Doriți să extrageți date din documentele scanate? Încerca Nanoneți™ avansat Scaner OCR bazat pe inteligență artificială pentru a extrage și organiza informații din documente scanate în mod automat.
Introducere
Pe măsură ce lumea a trecut de la hârtii și scrieri de mână la documente digitale pentru comoditate, importanța conversiei imaginilor și documentelor scanate în date semnificative a crescut vertiginos.
Pentru a ține pasul cu nevoia de extragere a datelor de documente foarte precise, numeroase unități de cercetare și corporații (de exemplu, Google, AWS, Nanonets etc.) s-au concentrat profund pe tehnologiile din domeniile viziunii computerizate și procesării limbajului natural (NLP).
Înflorirea tehnologiilor de învățare profundă a asigurat un salt uriaș în tipul de date care pot fi extrase; nu mai suntem constrânși doar să extragem text, ci și alte structuri de date, cum ar fi tabelele și perechile cheie-valoare. Multe soluții oferă acum diverse produse pentru a satisface nevoile persoanelor fizice și ale proprietarilor de afaceri în extragerea datelor documentelor.
Acest articol analizează tehnologia actuală utilizată pentru extragerea datelor din documentele scanate, urmată de un scurt tutorial practic în Python. De asemenea, vom analiza câteva dintre soluțiile populare de pe piață care oferă cele mai bune oferte în acest domeniu.
Ce este extragerea datelor?
Extragerea datelor este procesul de conversie a datelor nestructurate în informații interpretabile de către programe pentru a permite prelucrarea ulterioară a datelor de către oameni. Aici listăm câteva dintre cele mai comune tipuri de date care trebuie extrase din documentele scanate.
Date text
Cea mai comună și cea mai importantă sarcină în extragerea datelor din documentele scanate este extragerea textului. Acest proces, deși aparent simplu, este de fapt foarte dificil, deoarece documentele scanate sunt adesea prezentate în format de imagini. În plus, metodele de extragere depind foarte mult de tipurile de text. În timp ce textul este prezent în formate tipărite dense în majoritatea timpului, abilitatea de a extrage text rar din documente mai puțin bine scanate sau din scrisori scrise de mână cu stiluri drastic diferite este la fel de importantă. Un astfel de proces va permite programelor să convertească imaginile în text codificat de mașină, unde le putem organiza în continuare din date nestructurate (fără o anumită formatare) în date structurate pentru analize ulterioare.
Mese
Formele tabulare sunt cea mai populară abordare pentru stocarea datelor, deoarece formatul este ușor de interpretat cu ochiul uman. Procesul de extragere a tabelelor din documentele scanate necesită o tehnologie dincolo de detectarea caracterelor - trebuie să detecteze liniile și alte caracteristici vizuale pentru a realiza o extragere adecvată a tabelului și pentru a converti în continuare acele informații în date structurate pentru calcule ulterioare. Metodele de viziune computerizată (descrise în detaliu în secțiunile următoare) sunt foarte utilizate pentru a obține o extragere a tabelelor de mare precizie.
Perechi cheie-valoare
Un format alternativ pe care îl adoptăm adesea în documente pentru stocarea datelor este perechile cheie-valoare (KVP).
KVP-urile sunt în esență două elemente de date - o cheie și o valoare - legate între ele ca unul singur. Cheia este folosită ca un identificator unic pentru valoarea care trebuie preluată. Un exemplu clasic KVP este dicționarul, unde vocabularele sunt cheile și definițiile corespunzătoare sunt valorile. Aceste perechi, deși sunt de obicei neobservate, sunt de fapt folosite foarte frecvent în documente: întrebările din sondaje precum numele, vârsta și prețurile articolelor din facturi sunt toate implicit KVP.
Cu toate acestea, spre deosebire de tabele, KVP-urile există adesea în formate necunoscute și uneori sunt chiar parțial scrise de mână. De exemplu, cheile pot fi pre-imprimate în casete, iar valorile sunt scrise de mână la completarea formularului. Prin urmare, găsirea structurilor de bază pentru a efectua automat extracția KVP este un proces de cercetare în curs de desfășurare chiar și pentru cele mai avansate facilități și laboratoare.
cifre
În cele din urmă, este, de asemenea, foarte important să extragi sau captarea datelor din figuri dintr-un document scanat. Indicatorii statistici, cum ar fi diagramele circulare și diagramele cu bare includ adesea informații esențiale pentru documente. Un proces bun de extragere a datelor ar trebui să poată deduce din legende și numere pentru a extrage parțial date din cifre pentru utilizare ulterioară.
Doriți să extrageți date din documentele scanate? Dă Nanonets™ o rotire pentru o precizie mai mare, o flexibilitate mai mare, post-procesare și un set larg de integrări!
Tehnologii din spatele extragerii datelor
Extragerea datelor se învârte în jurul a două procese principale: Recunoașterea optică a caracterelor (OCR) urmată de Procesarea limbajului natural (NLP).
Extragerea OCR este procesul de conversie a imaginilor text în text codificat automat, în timp ce acesta din urmă este analiza cuvintelor pentru a deduce semnificații. Adesea, însoțite de OCR sunt alte tehnici de viziune computerizată, cum ar fi detectarea casetelor și a liniilor, pentru a extrage tipurile de date menționate mai sus, cum ar fi tabelele și KVP-urile pentru o extracție mai cuprinzătoare.
Îmbunătățirile de bază din spatele conductei de extracție a datelor sunt strâns legate de progresele în învățarea profundă care au contribuit în mare măsură la domeniile viziunii computerizate și procesării limbajului natural (NLP).
Ce este învățarea profundă?
Învățarea profundă, are un rol major în spatele hype-ului erei inteligenței artificiale și a fost constant împinsă în prim-plan în numeroase aplicații. În ingineria tradițională, scopul nostru este de a proiecta un sistem/funcție care generează o ieșire dintr-o intrare dată; învățarea profundă, pe de altă parte, se bazează pe intrări și ieșiri pentru a găsi relația intermediară care poate fi extinsă la date noi nevăzute prin așa-numita rețele neuronale.
O rețea neuronală sau un perceptron cu mai multe straturi (MLP), este o arhitectură de învățare automată inspirată de modul în care creierul uman învață. Rețeaua conține neuroni, care imită neuronii biologici și „activează” atunci când li se oferă informații diferite. Seturi de neuroni formează straturi, iar straturi multiple sunt stivuite împreună pentru a forma o rețea care să servească scopurilor de predicție ale formelor multiple (adică clasificări de imagini sau casete de delimitare pentru detectarea obiectelor).
În domeniul vederii computerizate, se aplică intens un tip de variație a rețelei neuronale - rețelele neuronale convoluționale (CNN-uri). În loc de straturi tradiționale, un CNN adoptă nuclee convoluționale care alunecă prin tensori (sau vectori cu dimensiuni mari) pentru extragerea caracteristicilor. Însoțite în cele din urmă de straturi tradiționale de rețea, CNN-urile au mare succes în sarcinile legate de imagini și au format în continuare baza pentru extracția OCR și pentru detectarea altor caracteristici.
Pe de altă parte, NLP se bazează pe un alt set de rețele, care se concentrează pe datele din serii de timp. Spre deosebire de imagini, în care o imagine este independentă una de cealaltă, predicția textului poate fi în mare măsură avantajată dacă se iau în considerare și cuvintele anterioare sau de după. În ultimii ani, o familie de rețele, și anume amintiri lungi pe termen scurt (LSTM-uri), care ia rezultatele anterioare drept intrări pentru a prezice rezultatele curente. LSTM-urile bilaterale au fost, de asemenea, adesea adoptate pentru a îmbunătăți rezultatul de predicție, unde au fost luate în considerare atât rezultatele anterioare, cât și cele de după. Cu toate acestea, în ultimii ani, un concept de transformatoare care utilizează un mecanism de atenție a început să crească datorită flexibilității sale mai mari, ceea ce duce la rezultate mai bune decât rețelele tradiționale care manipulează serii temporale secvențiale.
Aplicații ale extragerii datelor
Scopul principal al extragerii datelor este de a converti datele din documente nestructurate în formate structurate, în care o regăsire foarte precisă a textului, figurilor și structurilor de date poate fi foarte utilă pentru analiza numerică și contextuală. Aceste analize pot fi foarte utile în special pentru companii:
Afaceri
Corporațiile comerciale și organizațiile mari se confruntă cu mii de documente cu formate similare în fiecare zi — Băncile mari primesc numeroase aplicații identice, iar echipele de cercetare trebuie să analizeze grămezi de formulare pentru a efectua analize statistice. Prin urmare, automatizarea etapei inițiale de extragere a datelor din documente reduce semnificativ redundanța resurselor umane și permite lucrătorilor să se concentreze pe analizarea datelor și revizuirea aplicațiilor în loc să introducă informații.
- Verificarea aplicațiilor — Companiile primesc o mulțime de cereri, fie că sunt scrise de mână, fie doar prin formulare de cerere. De cele mai multe ori, aceste aplicații pot fi însoțite de ID-uri personale în scopuri de verificare. Documentele scanate ale ID-urilor, cum ar fi pașapoartele sau cardurile, vin de obicei în loturi cu formate similare. Prin urmare, un extractor de date bine scris poate converti rapid datele (texte, tabele, cifre, KVP) în texte ușor de înțeles de mașină, ceea ce ar putea reduce substanțial orele de lucru pentru aceste sarcini și ar putea concentra pe selecția aplicației în loc de extragere.
- Reconcilierea plăților — Reconcilierea plăților este procesul de comparare a extraselor bancare pentru a asigura potrivirea numerelor între conturi, care se referă în mare parte la extragerea datelor din documente - o problemă dificilă pentru o companie cu dimensiuni considerabile și diverse surse de venit. Extragerea datelor poate ușura acest proces și permite angajaților să se concentreze asupra datelor defecte și să exploreze potențialele evenimente frauduloase despre fluxul de numerar.
- Analiza statistică — Feedback-ul de la clienți sau participanții la experiment este folosit de corporații și organizații pentru a-și îmbunătăți produsele și serviciile, iar o evaluare cuprinzătoare a feedback-ului va necesita de obicei o analiză statistică. Cu toate acestea, datele sondajului pot exista în numeroase formate sau pot fi ascunse între text cu diferite formate. Extragerea datelor ar putea ușura procesul prin evidențierea datelor evidente din documente în loturi, ușurează procesul de găsire a proceselor utile și, în cele din urmă, crește eficiența.
- Partajarea înregistrărilor anterioare — De la asistența medicală până la schimbarea serviciilor bancare, marile industrii necesită adesea noi informații despre clienți, care ar fi existat deja în altă parte. De exemplu, un pacient care schimbă spitalele din cauza mutării poate avea dosare medicale preexistente care ar putea fi utile noului spital. În astfel de cazuri, un software bun de extragere a datelor este la îndemână, deoarece tot ce este necesar este ca persoana respectivă să aducă un istoric scanat al înregistrărilor la noul spital pentru a completa automat toate informațiile. Acest lucru nu numai că ar fi convenabil, dar ar putea evita și riscurile extinse, în special în industria de asistență medicală, ca înregistrările importante ale pacienților să fie trecute cu vederea.
Doriți să extrageți date din documentele scanate? Dă Nanonets™ o rotire pentru o precizie mai mare, o flexibilitate mai mare, post-procesare și un set larg de integrări!
Tutoriale
Pentru a oferi o perspectivă mai clară asupra modului în care se efectuează extragerea datelor, arătăm două seturi de metode pentru efectuarea extragerii datelor din documentele scanate.
Construire de la zero
Se poate construi un motor simplu de extragere a datelor OCR prin intermediul motorului PyTesseract, după cum urmează:
try: from PIL import Image
except ImportError: import Image
import pytesseract # If you don't have tesseract executable in your PATH, include the following:
pytesseract.pytesseract.tesseract_cmd = r'<full_path_to_your_tesseract_executable>'
# Example tesseract_cmd = r'C:Program Files (x86)Tesseract-OCRtesseract' # Simple image to string
print(pytesseract.image_to_string(Image.open('test.png'))) # List of available languages
print(pytesseract.get_languages(config='')) # French text image to string
print(pytesseract.image_to_string(Image.open('test-european.jpg'), lang='fra')) # In order to bypass the image conversions of pytesseract, just use relative or absolute image path
# NOTE: In this case you should provide tesseract supported images or tesseract will return error
print(pytesseract.image_to_string('test.png')) # Batch processing with a single file containing the list of multiple image file paths
print(pytesseract.image_to_string('images.txt')) # Timeout/terminate the tesseract job after a period of time
try: print(pytesseract.image_to_string('test.jpg', timeout=2)) # Timeout after 2 seconds print(pytesseract.image_to_string('test.jpg', timeout=0.5)) # Timeout after half a second
except RuntimeError as timeout_error: # Tesseract processing is terminated pass # Get bounding box estimates
print(pytesseract.image_to_boxes(Image.open('test.png'))) # Get verbose data including boxes, confidences, line and page numbers
print(pytesseract.image_to_data(Image.open('test.png'))) # Get information about orientation and script detection
print(pytesseract.image_to_osd(Image.open('test.png'))) # Get a searchable PDF
pdf = pytesseract.image_to_pdf_or_hocr('test.png', extension='pdf')
with open('test.pdf', 'w+b') as f: f.write(pdf) # pdf type is bytes by default # Get HOCR output
hocr = pytesseract.image_to_pdf_or_hocr('test.png', extension='hocr') # Get ALTO XML output
xml = pytesseract.image_to_alto_xml('test.png')
Pentru mai multe informații despre cod, puteți verifica oficialul lor documentație.
Cu cuvinte simple, codul extrage date precum texte și casete de delimitare dintr-o imagine dată. Deși este destul de util, motorul nu este la fel de puternic ca cel oferit de soluții avansate datorită puterii lor de calcul substanțiale pentru antrenament.
Folosind Google Document API
def async_detect_document(gcs_source_uri, gcs_destination_uri):
"""OCR with PDF/TIFF as source files on GCS""" import json import re from google.cloud import vision from google.cloud import storage # Supported mime_types are: 'application/pdf' and 'image/tiff' mime_type = 'application/pdf' # How many pages should be grouped into each json output file. batch_size = 2 client = vision.ImageAnnotatorClient() feature = vision.Feature( type_=vision.Feature.Type.DOCUMENT_TEXT_DETECTION) gcs_source = vision.GcsSource(uri=gcs_source_uri) input_config = vision.InputConfig( gcs_source=gcs_source, mime_type=mime_type) gcs_destination = vision.GcsDestination(uri=gcs_destination_uri) output_config = vision.OutputConfig( gcs_destination=gcs_destination, batch_size=batch_size) async_request = vision.AsyncAnnotateFileRequest( features=[feature], input_config=input_config, output_config=output_config) operation = client.async_batch_annotate_files( requests=[async_request]) print('Waiting for the operation to finish.') operation.result(timeout=420) # Once the request has completed and the output has been # written to GCS, we can list all the output files. storage_client = storage.Client() match = re.match(r'gs://([^/]+)/(.+)', gcs_destination_uri) bucket_name = match.group(1) prefix = match.group(2) bucket = storage_client.get_bucket(bucket_name) # List objects with the given prefix. blob_list = list(bucket.list_blobs(prefix=prefix)) print('Output files:') for blob in blob_list: print(blob.name) # Process the first output file from GCS. # Since we specified batch_size=2, the first response contains # the first two pages of the input file. output = blob_list[0] json_string = output.download_as_string() response = json.loads(json_string) # The actual response for the first page of the input file. first_page_response = response['responses'][0] annotation = first_page_response['fullTextAnnotation'] # Here we print the full text from the first page. # The response contains more information: # annotation/pages/blocks/paragraphs/words/symbols # including confidence scores and bounding boxes print('Full text:n') print(annotation['text'])
În cele din urmă, IA pentru documente de la Google vă permite să extrageți numeroase informații din documente cu precizie ridicată. În plus, serviciul este oferit și pentru utilizări specifice, inclusiv extragerea de text atât pentru imaginile normale, cât și pentru cele sălbatice.
Va rog, referiti-va la aici pentru mai mult.
Soluții curente care oferă extragerea datelor
Pe lângă corporațiile mari cu API-uri pentru extragerea datelor documentelor, există mai multe soluții care oferă o precizie ridicată PDF OCR Servicii. Vă prezentăm câteva opțiuni de PDF OCR care sunt specializate în diferite aspecte, precum și câteva prototipuri recente de cercetare care par să ofere rezultate promițătoare*:
*Notă secundară: există mai multe servicii OCR care sunt direcționate către sarcini precum imagini în sălbăticie. Am omis aceste servicii, deoarece în prezent ne concentrăm doar pe citirea documentelor PDF.
- API-ul Google — Fiind unul dintre cei mai mari furnizori de servicii online, Google oferă rezultate uimitoare în extragerea documentelor cu tehnologia lor inovatoare de viziune computerizată. Puteți folosi serviciile lor gratuit dacă utilizarea este destul de scăzută, dar prețul crește pe măsură ce apelurile API cresc.
- Reader profund — Deep Reader este o lucrare de cercetare publicată în Conferința ACCV 2019. Încorporează mai multe arhitecturi de rețea de ultimă generație pentru a îndeplini sarcini precum potrivirea documentelor, preluarea textului și eliminarea zgomotului imaginilor. Există funcții suplimentare, cum ar fi tabelele și extragerea perechilor cheie-valoare, care permit recuperarea și salvarea datelor într-un mod organizat.
- Nanonets™ — Cu o echipă de învățare profundă foarte pricepută, Nanonets™ PDF OCR este complet independent de șablon și de reguli. Prin urmare, Nanonets™ nu numai că poate funcționa pe anumite tipuri de PDF-uri, ci poate fi aplicat și pe orice tip de document pentru recuperarea textului.
Doriți să extrageți date din documentele scanate? Dă Nanonets™ o rotire pentru o precizie mai mare, o flexibilitate mai mare, post-procesare și un set larg de integrări!
Concluzie
În concluzie, acest articol prezintă o explicație detaliată cu privire la extragerea datelor din documentele scanate, inclusiv provocările din spatele acesteia și tehnologia necesară pentru acest proces.
Sunt prezentate două tutoriale cu metode diferite, iar soluțiile actuale care îl oferă din cutie sunt, de asemenea, prezentate pentru referință.
- 2019
- Despre Noi
- Absolut
- Cont
- precis
- Obține
- plus
- Suplimentar
- avansat
- avans
- AI
- algoritmi
- TOATE
- deja
- alternativă
- analiză
- analiză
- O alta
- api
- API-uri
- aplicație
- aplicatii
- abordare
- arhitectură
- în jurul
- articol
- artificial
- inteligență artificială
- atenţie
- Automatizare
- disponibil
- AWS
- fundal
- Bancă
- Băncile
- bază
- fiind
- CEL MAI BUN
- Dincolo de
- Cea mai mare
- frontieră
- Cutie
- construi
- afaceri
- întreprinderi
- Carduri
- cazuri
- Bani gheata
- fluxul de numerar
- sigur
- provocări
- provocare
- Grafice
- Finalizeaza comanda
- clasic
- Cloud
- CNN
- cod
- cum
- Comun
- Companii
- companie
- complet
- completarea
- cuprinzător
- calcul
- calculator
- concept
- Conferință
- încredere
- legat
- mereu
- conține
- Contribuit
- comoditate
- Convenabil
- conversii
- Nucleu
- Corporații
- Corespunzător
- ar putea
- crucial
- Curent
- În prezent
- client
- clienţii care
- de date
- de prelucrare a datelor
- stocare a datelor
- afacere
- descris
- Amenajări
- detaliu
- Detectare
- diferit
- dificil
- digital
- documente
- cu ușurință
- eficiență
- de angajați
- Motor
- Inginerie
- mai ales
- În esență,
- estimări
- etc
- evaluare
- evenimente
- exemplu
- Cu excepția
- experiment
- explora
- extensiv
- extracte
- familie
- Caracteristică
- DESCRIERE
- feedback-ul
- Domenii
- descoperire
- First
- Flexibilitate
- debit
- Concentra
- concentrat
- se concentrează
- concentrându-se
- următor
- frunte
- formă
- format
- formulare
- Gratuit
- Franceză
- Îndeplini
- Complet
- mai mult
- scop
- bine
- mai mare
- foarte mult
- Manipularea
- hands-on
- cap
- de asistență medicală
- industria sănătății
- util
- aici
- Înalt
- superior
- extrem de
- istorie
- spitale
- Cum
- Cum Pentru a
- Totuși
- HTTPS
- uman
- Resurse Umane
- Oamenii
- imagine
- importanță
- important
- îmbunătăţi
- include
- Inclusiv
- Venituri
- Crește
- individ
- persoane fizice
- industrii
- industrie
- informații
- intrare
- inspirat
- Inteligență
- problema
- IT
- Loc de munca
- Cheie
- chei
- Labs
- limbă
- Limbă
- mare
- conducere
- AFLAȚI
- învăţare
- Linie
- Listă
- Lung
- maşină
- masina de învățare
- major
- Majoritate
- om
- manieră
- Piață
- Meci
- potrivire
- medical
- Metode
- mai mult
- cele mai multe
- Cel mai popular
- în mişcare
- multiplu
- și anume
- Natural
- nevoilor
- reţea
- rețele
- normală.
- numere
- numeroși
- oferi
- oferit
- oferind
- ofertele
- promoții
- oficial
- în curs de desfășurare
- on-line
- operaţie
- Opţiuni
- comandă
- organizații
- Organizat
- Altele
- Proprietarii
- participanţi
- plată
- efectuarea
- perioadă
- personal
- pionierat
- Popular
- potenţial
- putere
- prezice
- prezicere
- prezenta
- destul de
- precedent
- preţ
- proces
- procese
- prelucrare
- Produse
- Program
- Programe
- promițător
- furniza
- furnizarea
- scopuri
- repede
- RE
- Cititor
- Citind
- a primi
- reconciliere
- înregistrări
- reduce
- cu privire la
- relaţie
- solicita
- necesita
- necesar
- Necesită
- cercetare
- Resurse
- răspuns
- REZULTATE
- reveni
- Riscurile
- scanare
- secunde
- serviciu
- Servicii
- set
- câteva
- Pantaloni scurți
- Pe termen scurt
- asemănător
- simplu
- întrucât
- Mărimea
- Software
- solid
- soluţii
- unele
- de specialitate
- Rotire
- de ultimă oră
- Declarații
- statistic
- depozitare
- curent
- puternic
- structurat
- substanțial
- de succes
- Suportat
- Sondaj de opinie
- vizate
- sarcini
- echipă
- tehnici de
- Tehnologii
- Tehnologia
- test
- lumea
- prin urmare
- mii
- Prin
- timp
- ori
- împreună
- Ton
- față de
- tradiţional
- Pregătire
- tutoriale
- Tipuri
- înţelege
- unic
- utilizare
- obișnuit
- valoare
- diverse
- Verificare
- Vizualizare
- viziune
- dacă
- în timp ce
- în
- fără
- cuvinte
- Apartamente
- muncitorii
- lume
- ar
- XML
- ani