Konverter PDF-data til databaseoppføringer PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Konverter PDF-data til databaseoppføringer

Flere organisasjoner og virksomheter er avhengige av PDF-dokumenter for å dele viktige dokumenter som fakturaer, lønnsslipper, økonomi, arbeidsordrer, kvitteringer og mer. PDF-filer er imidlertid ikke de beste formatene for lagring av historiske data, siden de ikke enkelt kan eksporteres og organiseres i arbeidsflyter. Så folk bruker informasjonsutvinningsalgoritmer for å digitalisere PDF-er og skannede dokumenter til strukturerte formater som JSON, CSV, Tables eller Excel som enkelt kan konverteres til andre organisatoriske arbeidsflyter.

I noen tilfeller inneholder PDF-er viktig informasjon som skal behandles i forskjellige ERP-er, CMS og andre databasedrevne systemer. Dessverre har ikke PDF-dokumenter en enkel funksjon for PDF til database, og det er litt komplisert å skrive skript eller bygge en arbeidsflyt rundt denne oppgaven. Det er her OCR og Deep Learning (DL) algoritmer kommer inn i bildet for å trekke ut data fra disse PDF-formatene og eksportere dem til en database. I dette blogginnlegget vil vi se på forskjellige måter for hvordan du kan oppnå det ved å bruke DL-teknologier samt noen populære API-er på markedet.

Hva er PDF til databasekonvertering?

PDF til databasekonvertering er oppgaven med å eksportere data fra PDF-er til en database som Postgres, Mongo, MySQL, etc.

Anta at vi skulle bygge en webapplikasjon eller et ERP-system som holder og vedlikeholder fakturainformasjon fra forskjellige kilder. Å legge til historiske fakturaer manuelt i en database er en oppoverbakke oppgave og er svært utsatt for feil. På den annen side kan det hende at bruk av en enkel OCR ikke trekker ut tabeller nøyaktig fra fakturaer.

Det er her avansert AI-drevet PDF til Database-konvertering kommer godt med!

Kan denne AI-drevne PDF-til-database-konverteringsprosessen automatiseres? – Ja.

I avsnittene nedenfor bruker vi datasyn og dyp læring for å oppdage tabellområder fra skannede dokumenter. Disse tabellene er videre lagret i et bestemt dataformat som CSV eller excel og vil bli presset direkte inn i databaser.

Før vi diskuterer disse, la oss forstå noen brukstilfeller der deteksjon av PDF til database kan være nyttig.

Ulike brukssaker for PDF til databaser

Databaser er de beste måtene å lagre informasjon på både sky og lokal lagring. De lar oss utføre forskjellige operasjoner og manipulasjoner ved hjelp av enkle spørringer. Her er noen brukstilfeller som kan optimaliseres betraktelig med en automatisert arbeidsflyt for konvertering av PDF til database:

  1. Fakturabehandling på nettet: Bedrifter og organisasjoner håndterer flere fakturaer hver dag; og det er vanskelig for dem å behandle hver faktura manuelt. Noen ganger samler og mottar de også fakturaer i et ikke-digitalt format, noe som gjør dem vanskeligere å spore. Derfor er de avhengige av nettbaserte applikasjoner som kan lagre alle fakturaene deres på ett sted. En PDF til database-konverterer kan automatisere datautvinning fra fakturaene til webapplikasjonen. For å automatisere disse oppgavene effektivt, kunne vi kjøre cron-jobber og integrere dem med tredjepartstjenester som n8n og Zapier – når en ny faktura skannes og lastes opp, kan den kjøre algoritmen og automatisk skyve den inn i tabeller.
  2. ECom Inventory Managerst: Mye e-com lagerstyring kjører fortsatt gjennom manuell oppføring av produkter fra PDF-er og skannede kopier. Imidlertid må de laste opp alle dataene sine til programvare for fakturering for å holde styr på alle produktene og salgene deres. Derfor kan bruk av tabell-til-database-konverteringsalgoritmen bidra til å automatisere manuell inntasting og spare ressurser. Denne prosessen innebærer vanligvis å skanne inventarlisten fra skannede dokumenter og eksportere dem til spesifikke databasetabeller basert på ulike forretningsregler og betingelser.
  3. Datautvinning fra undersøkelser: For å samle inn tilbakemeldinger og annen verdifull informasjon, gjennomfører vi vanligvis en undersøkelse. De gir en kritisk kilde til data og innsikt for nesten alle som er engasjert i informasjonsøkonomien, fra bedrifter og media til myndigheter og akademikere. Når disse samles på nettet, er det enkelt å trekke ut tabelldatastatus basert på brukersvaret og laste det opp til en database. Men i de fleste tilfeller er undersøkelsessvarene på papir. I slike tilfeller er det veldig vanskelig å manuelt samle informasjon fra og lagre dem i et digitalt format. Derfor kan å stole på en tabell til databasealgoritmer spare tid og også kutte ekstra kostnader.

Hvordan trekke ut informasjon fra PDF-er til relasjonelle og ikke-relasjonelle databaser?

En PDF-fil blir sett på som to forskjellige typer, elektronisk generert og ikke-elektronisk generert.

  1. Elektroniske PDF-filer: Dette skannede PDF-dokumentet kan ha skjult tekst bak bildet; disse er også referert til som elektronisk genererte PDF-er.
  2. Ikke-elektroniske PDF-filer: I denne typen ser vi mer innhold hardkodet som bilder. Dette er tilfellet når du har et papirdokument skannet inn i en PDF-fil.

Vi kunne stole på enkle programmeringsspråk og rammeverk som Python og Java for den første typen (elektronisk generert). For ikke-elektronisk genererte PDF-er må vi bruke Computer Vision-teknikker med OCR og dyp læring. Imidlertid er disse algoritmene kanskje ikke de samme for alle tabellekstraksjonsalgoritmene, og de må endres avhengig av typen data for å oppnå høyere nøyaktighet. NLP (Natural Language Processing) brukes også til å forstå dataene i tabeller og trekke dem ut i noen tilfeller.

På den annen side er det to typer databaser (relasjonelle og ikke-relasjonelle); hver av disse databasene har forskjellige sett med regler basert på deres arkitektur. En relasjonsdatabase er strukturert, noe som betyr at dataene er organisert i tabeller. Noen få eksempler inkluderer MySQL, Postgres, etc.

I motsetning til dette er den ikke-relasjonelle databasen dokumentorientert, noe som betyr at all informasjon blir lagret i mer en vaskelisterekkefølge. Innenfor et enkelt konstruktørdokument vil du ha alle dataene dine oppført - for eksempel MongoDB.

PDF til en database når dokumenter genereres elektronisk

Som diskutert, for elektronisk genererte PDF-er, er prosessen med å trekke ut tabeller enkel. Tanken er å trekke ut tabeller og deretter bruke enkle skript for å konvertere dem eller legge dem til tabeller. For tabelluttak fra PDF-er er det primært to teknikker.

Teknikk #1 Stream: Algoritmen analyserer tabeller basert på mellomrom mellom celler for å simulere en tabellstruktur – og identifiserer hvor teksten ikke er til stede. Den er bygget på PDFMiners funksjonalitet for å gruppere tegn på en side til ord og setninger ved å bruke marger. I denne teknikken blir radene først oppdaget ved å gjøre grove gjetninger basert på en teksts y-akseposisjon (dvs. høyde). All tekst på samme linje anses å være en del av samme rad. Deretter blir leseren gruppert og satt sammen som en annen gruppe for å identifisere kolonnene i tabellen. Til slutt settes tabellen sammen basert på radene og kolonnene som ble oppdaget i tidligere trinn.

Teknikk #2 gitter: I motsetning til strømmen er gitter mer deterministisk. Det betyr at den ikke er avhengig av gjetninger; den analyserer først gjennom tabeller som har definerte linjer mellom celler. Deretter kan den automatisk analysere flere tabeller på en side. Denne teknikken fungerer i hovedsak ved å se på formen til polygoner og identifisere teksten inne i tabellcellene. Dette ville være enkelt hvis en PDF har en funksjon som kan identifisere polygoner. Hvis den hadde det, ville den sannsynligvis ha en metode for å lese hva som er inne i den. Det gjør det imidlertid ikke. Derfor er datasyn mye brukt for å identifisere disse formene og trekke ut innholdet i tabellen.

De utpakkede tabellene lagres primært i et datarammeformat. Det er en av de opprinnelige datatypene som tilbys av en av de mest populære Python-bibliotekpandaene. Det er flere fordeler med å lagre tabelldata i en dataramme. De kan enkelt håndteres, manipuleres og eksporteres til forskjellige formater som JSON, CSV eller tabeller. Men før vi skyver disse datarammene inn i tabeller, bør vi først koble til DB-Client-databasen og deretter migrere tabellen. Ved å bruke språk som Python kan vi finne flere biblioteker som kan koble til disse datakildene og eksportere data.

PDF til databasen når dokumenter er ikke-elektronisk generert

De ovenfor diskuterte teknikkene fungerer kanskje ikke for ikke-elektronisk genererte PDF-er, siden dataene her skannes manuelt gjennom en annen kilde. Dette er grunnen til at vi vil bruke OCR- og Deep Learning-teknikker for å trekke ut data fra skannede dokumenter og eksportere dem til databaser.

Kort sagt, Optical Character Recognition, OCR er et spesialverktøy som konverterer trykte bokstaver fra skannede dokumenter til redigerbar tekst. For å identifisere PDF-tabeller fra dokumenter, må vi først identifisere posisjonen til tabellen og deretter bruke OCR for å trekke ut data fra tabellceller. Følgende er trinnene for hvordan det oppnås:

  1. Først oppdager vi linjesegmentene ved å bruke horisontale og vertikale konturer.
  2. Linjeskjæringene mellom linjer oppdages ved å se på intensiteten til pikslene til alle linjene. Hvis en linjepiksel har mer intensitet enn resten av pikselen, er den en del av to linjer og derfor et skjæringspunkt.
  3. Kantene på tabellen bestemmes ved å se på intensiteten til pikslene til kryssede linjer. Her tas alle pikslene til en linje, og de mest eksterne linjene representerer grensene til tabellen.
  4. Bildeanalysen oversettes til PDF-koordinatene, hvor cellene bestemmes. Teksten tilordnes en celle basert på dens x- og y-koordinater.
  5. OCR brukes på koordinatene for å trekke ut teksten
  6. Den utpakkede teksten eksporteres til en dataramme basert på plasseringen av tabellen.

Slik kan vi trekke ut tabeller ved hjelp av CV. Det er imidlertid noen ulemper her. Disse algoritmene mislykkes for store tabeller og tabeller med forskjellige malstiler. Det er her dyp læring kommer inn; de bruker en spesiell type nevrale nettverksrammeverk for å lære av data og identifisere lignende mønstre basert på læringen. I løpet av det siste tiåret har de oppnådd toppmoderne ytelse, spesielt for oppgaver som informasjonsutvinning. La oss nå se på hvordan dype nevrale nettverk kan lære av data og trekke ut tabeller fra ethvert dokument.

Trening av dype nevrale nettverk innebærer en spesifikk arbeidsflyt; disse arbeidsflytene blir ofte endret basert på typen data vi jobber med og modellens ytelse. Den første fasen av arbeidsflyten innebærer å samle inn dataene og behandle dem basert på vår modell. I vårt tilfelle med å trekke ut tabellene fra PDF-dokumentene, bør datasettet ideelt sett inneholde ustrukturerte dokumenter. Disse dokumentene konverteres til bilder, lastes inn som tensorer og gjøres klare som en datalasterklasse for opplæring. Deretter definerer vi vanligvis alle hyperparametrene som kreves for trening. Disse inkluderer vanligvis oppsett av batchstørrelse, tapsfunksjon, optimalisering for modellen. Til slutt er en nevral nettverksarkitektur definert eller bygget på toppen av en forhåndsdefinert modell. Denne modellen vil bli trent på toppen av data og finjustert basert på ytelsesmålene.

Følgende er et skjermbilde av forskjellige trinn som er involvert i å trene en dyp læringsmodell:

Typisk ML arbeidsflyt (kilde)

Trekke ut data fra pdf og eksportere dem til SQL-database ved hjelp av Python

Så langt har vi lært hva pdf til databasekonvertering er og har diskutert noen bruksområder hvor det kan være nyttig. Denne delen vil praktisk talt nærme seg dette problemet ved hjelp av Computer Vision og oppdage tabeller i skannede pdf-er og eksportere dem til databaser. For å følge med, sørg for å installere Python og OpenCV på din lokale maskin. Alternativt kan du bruke en nettbasert Google Collab-notatbok.

Trinn 1: Installer Tabula og Pandas

I dette eksemplet vil vi bruke Tabula og Pandas til å trekke ut og skyve tabeller inn i databaser. La oss installere dem via pip og importere dem til programmet vårt.

import tabula
import pandas as pd

Trinn 2: Lese tabeller inn i dataramme

Nå skal vi bruke read_pdf funksjon fra tabell for å lese tabeller fra PDF-er; Vær oppmerksom på at dette biblioteket kun fungerer på PDF-dokumenter som er elektronisk generert. Følgende er kodebiten:

table = tabula.read_pdf("sample.pdf",pages='all',multiple_tables=False)

df = pd.concat(table)

Her, som vi kan se, bruker vi først til å lese innholdet for PDF-fil, vi setter parameteren multiple_tables til False, da dokumentet som ble brukt i eksemplet bare har én tabell.

Nå skal vi laste denne listen inn i en dataramme ved hjelp av pandaer, og du kan sjekke tabellens type ved å bruke typemetoden; dette vil returnere en innfødt panda-dataramme.

Trinn 3: Migrering av dataramme til Postres

Før vi skyver tabellen vår inn i databaser, bør vi først opprette en tilkobling til den fra programmet vårt, og vi kan gjøre dette ved å bruke sqlalchemy klient i python. På samme måte tilbyr forskjellige programmeringsspråk denne typen databaseklienter for å samhandle med databaser direkte fra programmene våre.

I dette programmet vil vi bruke create_engine metode som lar oss koble til databasen; sørg for å erstatte databaselegitimasjonen i den gitte strengen for å få dette til å fungere. Deretter bruker vi write_frame funksjon for å eksportere den utpakkede tabellen til den tilkoblede databasen.

engine = create_engine('postgresql+psycopg2://username:password@host:port/database')

sql.write_frame(df, 'table_name', con, flavor='postgresql')

Og akkurat som det var vi i stand til å eksportere tabeller fra PDF-er til databasen, dette ser ganske enkelt og enkelt ut ettersom vi har brukt en enkel behandlet elektronisk generert PDF. For å trekke ut tabeller fra ikke-elektronisk genererte tabeller er følgende populære dyplæringsteknikker som kan brukes:

  1. Paper with Code – GFTE: Graph-based Financial Table Extraction
  2. Papers with Code – PubTables-1M: Mot et universelt datasett og beregninger for opplæring og evaluering av tabellekstraksjonsmodeller
  3. TableNet: Deep Learning-modell for end-to-end tabellgjenkjenning og tabelldatautvinning fra skannede dokumentbilder

Skriv inn Nanonetter: Advanced OCR for PDF Table to Database Conversion

Denne delen vil se på hvordan Nanonets kan hjelpe oss å utføre tabeller til databasen på en mer tilpassbar og enklere måte.

Nanonets™ er en skybasert OCR som kan hjelpe deg med å automatisere din manuelle dataregistrering ved hjelp av AI. Vi vil ha et dashbord der vi kan bygge/trene våre OCR-modeller på våre data og transportere dem i JSON/CSV eller et hvilket som helst ønsket format. Her er noen av fordelene ved å bruke Nanonets som en PDF-dokumentskanner.

Et av høydepunktene til Nanonets er enkelheten tjenesten gir. Man kan velge disse tjenestene uten programmeringsbakgrunn og enkelt trekke ut PDF-data med banebrytende teknologi. Følgende er en kort oversikt over hvor enkelt det er å konvertere PDF til databasen.

Trinn 1: Gå til nanonets.com og registrer deg/logg inn.

Konverter PDF-data til databaseoppføringer PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Trinn 2: Etter registrering, gå til "Velg å komme i gang"-området, hvor du kan bruke de forhåndsbygde ekstraktorene eller lage en på egen hånd ved å bruke datasettet ditt. Her vil vi bruke forhåndsbygd fakturauttrekker.

Konverter PDF-data til databaseoppføringer PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Trinn 3: Last opp PDF av bilder, for å utføre datautvinning og velg alternativet for automatisk utpakking.

Konverter PDF-data til databaseoppføringer PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Trinn 4: Opprett en ny integrering MySQL-integrasjon for å eksportere utpakkede data til databasen. Alternativt kan du velge ulike alternativer basert på databasene du ønsker.

Konverter PDF-data til databaseoppføringer PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Etabler datatilkobling og klikk legg til integrasjon. Med dette vil dataene trekkes ut og automatisk lastes opp til en database hver gang filer lastes opp. Hvis du ikke finner de nødvendige integrasjonene, kan du alltid bruke Nanonets API og skrive enkle skript for å få automatiseringen utført.

Tidstempel:

Mer fra AI og maskinlæring