Sådan udtrækkes nøgle-værdi-par fra dokumenter ved hjælp af dyb læring

Kildeknude: 810340

Denne selvstudieblog undersøger nogle af anvendelsesmulighederne for nøgle-værdi-parudtræk, de traditionelle og nuværende tilgange til at løse opgaven og en eksempelimplementering med kode.

Nøgle-værdi-par eller KVP'er er i det væsentlige to sammenkædede dataelementer, en nøgle og en værdi, hvor nøglen bruges som en unik identifikator for værdien. Et klassisk eksempel på KVP-data er ordbogen: vokabularerne er nøglerne, og definitionerne af vokabularerne er de værdier, der er knyttet til dem. Faktisk kan disse datapar eksistere i forskellige typer tekstdokumenter; i formularer er nøglerne datatyperne/spørgsmålene (f.eks. Navn, Alder), og værdierne er de faktiske attributter, du udfylder tilsvarende; i fakturaer, nøglerne er de købte varer, og værdierne kan være priserne for forskellige varer.

Formularer er det mest almindelige eksempel i den virkelige verden på informationsvisning af nøgleværdipar

Men i modsætning til tabeller kan KVP'er ofte eksistere i ustrukturerede data eller ukendte formater og er nogle gange endda delvist håndskrevne. For eksempel, når du udfylder en formular, kan nøgleaspekterne være fortrykt som kasser, og værdierne er håndskrevne af dig, når du udfylder den. Manuelle dataudtræk fra sådanne dokumenter kan være skræmmende og fejlbehæftede, for ikke at nævne vanskeligheden, når disse dokumenter scannes ind som billeder i stedet for maskinkodede tekster. At finde de underliggende strukturer til automatisk at udføre KVP-ekstraktion kan således forbedre effektiviteten drastisk til både personlige og industrielle anvendelser.


Nanonetter OCR API har mange interessante brug sager. Tal med en Nanonets AI-ekspert for at lære mere.


Anvendelser af effektiv KVP-ekstraktion kan groft kategoriseres i personlige og forretningsmæssige anvendelser. Det følgende afsnit giver et overblik over flere store use cases, hvor hurtig og præcis datahentning kan være meget fordelagtig.

Personligt

Billede fra Unsplash

Selvom automatisering for det meste bruges til produktioner i stor skala, kan en hurtig og præcis nøgleværdiudtrækning også være gavnlig for små fester og personlige brug for at forbedre organisationen og effektiviteten af ​​vores daglige rutine.

ID-scanning og datakonvertering:

Personlige ID'er er typiske eksempler på dokumenter, der indeholder forskellige KVP'er, fra fornavn til fødselsdato. Når det er nødvendigt for online-applikationer, er vi ofte nødt til manuelt at finde og indtaste oplysningerne, hvilket kan være kedeligt og gentagne. KVP-udtræk fra billeder af ID'et kan give os mulighed for hurtigt at konvertere data til maskinforståelige tekster. At finde de matchende felter for forskellige værdier bliver så en triviel opgave for programmer, og den eneste manuelle indsats, der kræves, ville være bare at scanne igennem for at dobbelttjekke.

Faktura dataudtræk til budgettering:

Budgettering er et vigtigt aspekt af vores personlige rutine. Mens udviklingen af ​​excel og regneark allerede har gjort sådanne irritable opgaver nemmere, er en KVP-udtrækning af købte varer og deres tilsvarende priser fra blot et billede af faktura kan fremskynde hele processen endnu hurtigere. Strukturerede data og tal kan give os mulighed for hurtigt at udføre analyser og holde øje med køb, der er uden for vores overkommelige pris.

Virksomheder/Brancher

Billede fra Unsplash

Både industrier og virksomheder skal håndtere tusindvis af papirarbejde med lignende formater om dagen. Fra applikationer til forvaltning af aktiver er disse processer til hentning af dokumentoplysninger ofte arbejdskrævende. Derfor kan automatisering på det indledende trin med at udtrække nøgleværdi-par inden for uformaterede data betydeligt reducere redundansen af ​​menneskelige ressourcer, samtidig med at pålideligheden af ​​de hentede data sikres.

Automatisering af dokumentscanning:

Regeringer eller store virksomheder såsom banker behandler et stort antal håndskrevne formularer med identiske formater til forskellige formål (f.eks. visumansøgning, bankoverførsel). At hente de håndskrevne oplysninger ud af formularerne og konvertere dem til digitale dokumenter via menneskelig indsats kan være en ekstremt gentagne og kedelige opgave, som følgelig fører til hyppige mindre fejl. En ordentlig KVP-ekstraktionspipeline med at konvertere håndskrevne data til tilsvarende værdier af forskellige nøgler og derefter indtastning i store systemer kan ikke kun reducere sådanne fejl, men også spare ekstra arbejdsudgifter.

Undersøgelsesindsamling og statistisk analyse:

Virksomheder og ikke-statslige organisationer (NGO'er) kan ofte kræve feedback fra kunder eller borgere generelt for at forbedre deres nuværende produkt- eller salgsfremmende planer. For at kunne evaluere tilbagemeldingerne grundigt kræves der ofte statistisk analyse. Alligevel eksisterer det lignende problem med at konvertere ustrukturerede data og håndskrevne undersøgelser til numeriske tal, der kunne bruges til beregninger, stadig, og derfor spiller KVP-udtræk en afgørende rolle i at konvertere billeder af disse undersøgelser til analyserbare data.

Traditionel tilgang

Det vigtigste element i KVP-ekstraktion og at finde de underliggende nyttige data er OCR-processen (Optical Character Recognition). Med enkle ord er OCR den elektroniske konvertering af scannede billeder og fotos til maskinkodede tekster til yderligere beregninger.

Før nøjagtigheden af ​​dyb læring opfylder markedets behov for sådanne opgaver, udføres OCR'er med følgende procedure:

  1. Saml en database med kendte typer (f.eks. bogstaver og symboler)
  2. Brug en fotosensor til at samle punkterne/funktionerne fra et billede
  3. Sammenlign de punkter, der er hentet fra fotosensorerne, med de fysiske egenskaber for bogstaver og symboler
  4. Konverter sættet af punkter til de kendte typer efter at have fundet de højeste lighedsattributter

Selvom denne metode ser ud til at være effektiv det meste af tiden, eksisterer der to store begrænsninger fra den traditionelle tilgang:

Kræver skabeloner og regler for forskellige dokumenttyper:

Ved kun at bruge justeringer af fysiske attributter er det stadig svært at bestemme boksene eller formaterne formularerne oprettes, og derfor kan KVP-udtrækningen stadig kræve ekstra skabeloner eller regler for at fange de nødvendige data.

Let fejlbehæftet på grund af svær håndskrift:

Justeringer af fysiske egenskaber bliver tilbøjelige til at fejle, når håndskrifterne adskiller sig for meget med hensyn til størrelse og stil. Da disse håndskrevne tegn er ukendte, før de rent faktisk ses, er det heller ikke muligt for dem at være en del af databasen. Dette kræver ofte, at OCR'er udfører mere sofistikerede algoritmer udover attribut-matching for bedre nøjagtighed.

På trods af disse forhindringer, der gør, at KVP-udtræk fra scannede dokumenter tilsyneladende rammer en blindgyde, har den seneste stigning i deep learning kastet lys over nye og kreative tilgange til problemet.

Dyb læring i aktion

Deep learning er en af ​​de største grene af maskinlæring, der har vundet popularitet i de seneste årtier. I modsætning til traditionelle datalogiske og ingeniørmæssige tilgange, hvor vi designer det system, der modtager et input til at generere et output, håber deep learning at stole på input og output for at designe et mellemsystem, der kan udvides til usete input ved at skabe en såkaldt neurale netværk.

Et neuralt netværk er en arkitektur, der er inspireret af den menneskelige hjernes biologiske funktion. Netværket består af flere lag, hvor hvert lag indeholder adskillige kunstige neuroner og aktiveringsfunktioner. Input såsom billeder føres frem for at skabe en forudsigelse, og forudsigelsesfejlen forplantes tilbage for at ændre vægten i hele netværket.

Efterhånden som kapaciteten af ​​GPU'er og minder drastisk udviklede sig, er deep learning blevet den gunstige strategi i de senere år, som antændte kreative variationer af neurale netværk. Et af de mest typiske neurale netværk, der bruges i dag, især inden for computersyns domæne, er det konvolutionelle neurale netværk (CNN). CNN'er er i det væsentlige foldede kerner, der glider gennem billedet for at udtrække funktioner, som ofte ledsages af traditionelle netværkslag til at udføre opgaver såsom billedklassificering eller objektdetektering.

Med en vis grundlæggende forståelse af dyb læring gennemgår det følgende afsnit flere dybe læringstilgange til KVP-udvinding.

Tesseract OCR Engine (Motor)

Nylige OCR-teknikker har også inkorporeret dyb læringsmodeller for at opnå højere nøjagtighed. Tesseract OCR-motoren, der i øjeblikket vedligeholdes af Google, er et af eksemplerne, der bruger en bestemt type deep learning-netværk: en lang korttidshukommelse (LSTM).

Hvad er LSTM?

En LSTM er en bestemt familie af netværk, der hovedsageligt anvendes til sekvensindgange. Intuitionen er enkel - for data, der er sekventielle, såsom aktier eller vejrudsigter, kan tidligere resultater være vigtige indikatorer for det næste input, og derfor vil det være fordelagtigt konsekvent at videregive oplysninger fra tidligere datapunkter til nye forudsigelser. Ligeledes kan tidligere detekterede bogstaver til bogstavdetektering i OCR være nyttige til at afgøre, om det færre bogstav forudsagt på linje giver mening (f.eks. hvis bogstavet "D" og "o" detekteres, har "g" en meget større sandsynlighed for at er det næste bogstav i rækken end "y", selvom de kan ligne hinanden).

Tesseract arkitektur

Ovenstående figur er den detaljerede arkitektur af den nuværende Tesseract V4. En lille afgrænsningsramme flyttes frem pixel for pixel med tiden. Billedet afgrænset af boksen udtrækkes for at passere gennem både en fremadgående og bagudgående LSTM, efterfulgt af et foldningslag til det endelige output.

Hvordan hjælper det med KVP Extraction?

Den forbedrede arkitektur gør nøjagtigheden og robustheden af ​​OCR meget højere, og dermed nemmere at konvertere flere forskellige typer tekster til ét struktureret, elektronisk dokument. Disse elektroniske dokumenter med maskinlæsbare strenge er meget nemmere at organisere til KVP-udtrækning.

Dyb læser

Udover at lede fremskridtene inden for OCR, skabte dyb læring også muligheder for udforskning. Deep Reader, et workshoppapir fra den bedste CS-konference ACCV*, er et af eksemplerne, der bruger neurale netværk til at genkende former og formater, der rækker ud over kun ord og symboler i et scannet dokument. Sådanne teknikker kan være særligt nyttige i opgaver som KVP-ekstraktion.

*Sidebemærkning: De bedste forskningsartikler fra det computervidenskabelige domæne udgives normalt i top-tier konferencer. Accept til sådanne konferencer symboliserer en godkendelse og anerkendelse af eksperter inden for området. Asian Conference on Computer Vision (ACCV) er en af ​​de anerkendte konferencer inden for computervisionsområdet.

Hvad er Deep Reader?

Med enkle ord forsøger Deep Readers at tackle det igangværende problem med utilstrækkelig informationssøgning, når man kun uddrager ord og tekster alene ved også at finde de visuelle entiteter såsom linjer, tabeller og bokse i disse scannede dokumenter. For hvert billede forringer Deep Reader billedet, identificerer dokumentet og behandler den håndskrevne tekst med en dyb indlærende tilgang, før den opdager og udtrækker meningsfulde tekster og former. Disse funktioner bruges derefter til at hente borde, kasser og vigtigst af alt, KVP'er.

Forbehandling

Inden udtrækning af tekstenheder udfører Deep Reader flere forbehandlingstrin for at sikre den bedste kvalitetshentning i de sidste dele:

  1. Billeddæmpning: Deep Reader anvender en generativt modstridende netværk (GAN) for at generere en støjfri version af et input. GAN, først udviklet af Ian et al. i 2014, er et neuralt netværk, der består af to undernetværk - en generator og en diskriminator. Når et input er givet, genererer generatoren et billede baseret på inputtet, og diskriminatoren forsøger at skelne mellem grundsandheden og den genererede input. Når træningen er afsluttet, kan en generator med succes generere et billede baseret på input, der er tæt på den faktiske sandhed. I dette tilfælde forsøger GAN, givet par af billeder (en støjfri og en støjfri), at lære, hvordan man genererer den støjfrie version af billedet fra den forstyrrede.
  2. Dokumentidentifikation: For nøjagtigt at hente visuelle entiteter forsøger Deep Reader også at klassificere de scannede dokumenter i en af ​​skabelonerne via en foldning Siamesisk netværk. Det siamesiske netværk består af to identiske foldningslag, der accepterer billeder af henholdsvis det scannede dokument og skabeloner som input, og derefter beregner ligheden mellem de to. Den største lighed blandt alle sammenligninger indebærer, at dokumentet er baseret på skabelonen.
  3. Behandling af håndskrevet tekst: For at tackle problemet med at genkende håndskrevne tekster, anvender Deep Reader også en håndskrevet tekstgenkendelse gennem en encoder-dekoder for at kortlægge de håndskrevne tekster i sæt af tegn.

arkitektur

Billede fra Dyb læser

Efter forbehandling registrerer Deep Reader et sæt enheder fra billedet, herunder sidelinjer, tekstblokke, linjer med tekstblokke og felter. Detekteringen går gennem skemaet som vist på ovenstående figur for at hente et omfattende sæt data fra det scannede dokument. Regelbaserede metoder leveret af domæneeksperter er også vedtaget for at hjælpe ekstraktionsprocessen. For eksempel bruger Deep Reader abstrakte universelle datatyper såsom by, land og dato for at sikre, at de hentede felter er relevante.

Kode Implementering

Med en vis forståelse af KVP-udtrækning, lad os grave ind i kodeimplementeringen gennem et simpelt scenarie - firma-, adresse- og prisudtrækning fra fakturaer.

Ovenstående figur er en standard fakturaskabelon, gemt i et billedformat. Vi har mange af disse fakturaer med lignende formater, men manuelt at finde ud af KVP'erne såsom firmanavn, adresse og totalpris er et trættende job. Målet er således at designe en KVP-udtrækker således, at vi med et givet format (eller lignende formater) automatisk kan hente og præsentere KVP'erne.

For at udføre KVP-ekstraktion skal vi bruge et OCR-bibliotek og et billedbehandlingsbibliotek. Vi vil bruge det berygtede openCV-bibliotek til billedlæsning og -behandling og PyTesseract-biblioteket til OCR. PyTesseract-biblioteket er en indpakning af den førnævnte Google Tesseract-motor, som vil være tilstrækkelig til vores opgave.

*Sidebemærkning: Programmet er baseret på løsninger af ICDAR Robusting Reading Challenge

Del I — Biblioteker

Du kan bruge pip for at installere de to biblioteker via følgende kommandoer:

https://gist.github.com/ttchengab/c040ab7ce44114d76c63ecef226d5d09

Efter installationen kan vi så importere bibliotekerne som følgende:

https://gist.github.com/ttchengab/cd32bcd502e99c3e3cc9c73f693927c7

Vi bliver også nødt til at importere nogle eksterne biblioteker:

https://gist.github.com/ttchengab/01280236448e4fc4a03505f6f0baea3f

Del II — Billedforbehandling

https://gist.github.com/ttchengab/293fc3ca782b20cf9b05c33f13583338

Funktionen ovenfor er vores billedforbehandling til teksthentning. Vi følger en to-trins tilgang for at opnå dette:

For det første bruger vi cv2.imread() funktion til at hente billedet til behandling. For at øge klarheden af ​​teksterne på billedet udførte vi billedudvidelse efterfulgt af støjfjernelse ved hjælp af nogle cv2 funktioner. Nogle ekstra funktioner til billedbehandling er også angivet i kommentarfeltet. Derefter finder vi konturer fra billedet, og ud fra konturerne finder vi de afgrænsende rektangler.

For det andet, efter billedbehandling, henter vi derefter iterativt hver afgrænsningsramme og bruger pytesseract-motoren til at hente al tekstinformationen til at føres ind i et netværk til KVP-ekstraktion.

https://gist.github.com/ttchengab/b81ea8bb1c21121237845d65d15aa3a0

Ovenstående model er en simpel LSTM, der tager teksterne som input og udlæser KVP'erne for firmanavn, dato, adresse og total. Vi overtog den fortrænede model fra løsninger til testning.

Følgende er evalueringsfunktionerne for LSTM-netværket med et givet sæt tekster:

https://gist.github.com/ttchengab/9f31568ef1b916ab0ee74ac1b8b482e5

Del IV – Hele rørledningen

https://gist.github.com/ttchengab/c2f7614cbeaa8cd14883d4ebbcd36ba6

Med alle funktioner og biblioteker implementeret, kan hele pipelinen af ​​KVP-ekstraktion opnås med ovenstående kode. Bruger faktura ovenfor kunne vi med succes hente firmanavnet og adressen som følgende:

For at teste robustheden af ​​vores model, kan vi også teste på fakturaer med usete formater såsom følgende:

Ved at bruge den samme pipeline, uden yderligere uddannelse, kunne vi opnå følgende:

Selvom vi ikke kunne hente andre oplysninger såsom firmanavn eller adresse, var vi stadig i stand til at få totalen korrekt uden nogensinde at se nogen lignende fakturaformater før!

Med en forståelse af modelarkitekturen og pipeline kan du nu bruge mere faktura formater, der er mere relevante som træning og fortsætte med at træne modellen, så den ville fungere med større selvtillid og nøjagtighed.

Resumé

Fremkomsten af ​​deep learning har skabt muligheder for at genoverveje nogle af de ikke-trivielle problemer i informationssøgning. Denne artikel tjener som en introduktion til KVP-ekstraktion. Vi startede med at diskutere konceptet med KVP'er og anvendelsesmulighederne for dets ekstraktioner. Derefter dykker vi ned i tilgangene til at bruge den traditionelle OCR samt de dybe læringsmetoder for ekstraktionerne. Endelig lærte vi, hvordan man bruger en af ​​de avancerede deep learning-baserede OCR-motorer til at udføre KVP-ekstraktion fra fakturaer af lignende skabeloner.

Yderligere læsning


Du kan være interesseret i vores seneste indlæg om:

Update:
Tilføjet yderligere læsestof om nøgleværdiparudtræk fra dokumenter

Begynd at bruge Nanonets til automatisering

Prøv modellen eller anmod om en demo i dag!

PRØV NU

Kilde: https://nanonets.com/blog/key-value-pair-extraction-from-documents-using-ocr-and-deep-learning/

Tidsstempel:

Mere fra AI & Machine Learning blog