Denne blog tjener som udgangspunkt for alle, der ønsker at udtrække tabeller fra PDF-filer og billeder. Vi starter med en python-kodevejledning, som tager dig gennem processen med at implementere OCR på PDF-filer og billeder for at opdage og udtrække tabeller i strukturerede formater (liste, json-objekt, pandas-dataramme). Vi tager derefter et kig på en no code-platform til automatiseret tabeludtræk, og udforsker derefter et par tabeludtræksværktøjer, der er tilgængelige gratis online.
Introduktion
Det samlede antal PDF-dokumenter i verden anslås at have passeret 3 billioner. Vedtagelsen af disse dokumenter kan tilskrives deres iboende karakter af at være uafhængige af platforme og dermed have en konsistent og pålidelig gengivelsesoplevelse på tværs af miljøer.
Der er mange tilfælde, der opstår hver dag, hvor der er behov for at læse og udtrække tekst og tabeloplysninger fra PDF-filer. Mennesker og organisationer, der traditionelt gjorde dette manuelt, er begyndt at se på teknologiske alternativer, som kan erstatte manuel indsats ved brug af AI.
OCR står for Optical Character Recognition og anvender AI til at konvertere et billede af trykt eller håndskrevet tekst til maskinlæsbar tekst. Der findes forskellige open source og closed source OCR Engines, der eksisterer i dag. Det skal bemærkes, at jobbet ofte ikke er færdigt, efter at OCR har læst dokumentet og givet et output bestående af en strøm af tekst, og der bygges lag af teknologi over det for at bruge den nu maskinlæsbare tekst og udtrække relevante attributter i et struktureret format.
Vi vil bruge nedenstående faktura til bordudtræk. Målet er at læse mængden, beskrivelsen, enhedsprisen, mængden af hvert produkt i PDF'en af fakturaen i tabelformat.
Lad os komme i gang.
Forudsætninger
Den OCR, der kræves for at behandle filen og udpakke tabellen, håndteres af et API-kald til Nanonets API.
For at foretage API-kaldet og få ekstraheret tabeller fra pdf, har vi brug for anmodninger bibliotek. Til efterbehandlingskoden, som transformerer API-svaret til en liste over datarammer, har vi brug for pandaer , bedøvet bibliotek. Du kan installere dem i dit python-miljø ved at bruge pip.
pip install requests pandas numpy
For at få din første forudsigelse skal du køre kodestykket nedenfor. Du skal tilføje din API_KEY og MODEL_ID for at godkende dig selv.
Du kan få dit gratis API_KEY og MODEL_ID ved at tilmelde dig https://app.nanonets.com/#/signup?redirect=tools.
Når du er færdig, skal du køre nedenstående kodestykke.
import requests url = 'https://app.nanonets.com/api/v2/OCR/Model/REPLACE_MODEL_ID/LabelFile/?async=false' data = {'file': open('invoice.png', 'rb')} response = requests.post(url, auth=requests.auth.HTTPBasicAuth('REPLACE_API_KEY', ''), files=data)
Vi får nedenstående output.
result
objektet indeholder en række sidevise resultatobjekter. Hvert objekt indeholder prediction
objekt med alle detekterede tabeller som array-elementer. Hver detekterede tabel har derefter et array kaldet cells
, som er en matrix af alle celler i den detekterede tabel. Rækken, kolonnen og den registrerede originaltekst er til stede som row
, col
, ocr_text
attribut for hvert celleobjekt i cells
.
Vi vil nu udføre noget efterbehandling for at transformere json-svaret til pandas-datarammer. Efter at have modtaget API-svaret ovenfor, kan du køre kodestykket nedenfor for at få en liste over datarammer, der indeholder de opdagede tabeller.
import pandas as pd
import numpy as np alldfs = []
for item in response.json()["result"]: tables = [] dfs = [] for pred in item['prediction']: if pred['type'] == 'table': labels = ['none'] * 100 maxcol = 0 for cell in pred['cells']: if labels[cell['col'] - 1] == 'none': labels[cell['col'] - 1] = cell['label'] if cell['col'] > maxcol: maxcol = cell['col'] labels = labels[:maxcol] df = pd.DataFrame(index=np.arange(100), columns=np.arange(100)) for cell in pred['cells']: df[cell['col']][cell['row']] = cell['text'] df=df.dropna(axis=0,how='all') df=df.dropna(axis=1,how='all') df.columns = labels tables.append(df) alldfs.append(tables)
Efter at have kørt dette, alldfs
objekt er en liste, hvor hvert objekt på listen indeholder forudsigelser for hver side i dokumentet. Desuden er hvert sådant objekt i sig selv en liste over datarammer, der indeholder alle tabeller på den side.
Vi kan se, at de to tabeller, der er til stede på fakturaens pdf, er blevet opdaget og gemt som datarammer på første side alldfs[0]
, og de to borde kan tilgås på alldfs[0][0]
, alldfs[0][1]
.
Vi har således udført OCR på vores første PDF-fil og udtrukket tabeller fra den. Vi undersøgte json-svaret og udførte efterbehandling ved hjælp af pandaer og numpy for at få data i ønsket format. Du kan også anvende din egen efterbehandling til at behandle og bruge data fra json-svaret i henhold til din use case.
Vi leverer også en kodefri platform sammen med Nanoents API med ekstra understøttelse af linjeposter, automatiseret import og eksport fra populære ERP'er/software/databaser, rammer til opsætning af godkendelses- og valideringsregler og meget mere.
En af vores AI-eksperter kan komme på et 15-minutters opkald for at diskutere din use case, give dig en personlig demo og finde den bedste plan for dig.
Gør mere – Udpak linjeposter og flade felter
Du kan udvide funktionaliteten af Nanonets OCR til at registrere flade felter og linjeposter sammen med tabeller fra pdf-filer og billeder. Du kan træne din egen tilpassede model på 15 minutter at detektere enhver linjepost eller fladt felt i et billede eller en pdf-fil. Nanonets tilbyder også præbyggede modeller med linjepoststøtte tilføjet til populære dokumenttyper såsom fakturaer, kvitteringer, kørekort, ID-kort, CV'er osv.
Oprettelse af en brugerdefineret model eller brug af en af vores forudbyggede modeller giver dig således mulighed for at opdage og udtrække linjeposter, flade felter og tabeller i et enkelt API-kald.
Lad os tage eksemplet med fakturaen ovenfor. Målet er nu at opdage flade felter som sælgernavn, sælgeradresse, telefonnummer, e-mail, samlet beløb sammen med tabellerne fra faktura pdf-filen ved hjælp af Nanonets OCR.
Du kan gå til https://app.nanonets.com og klone den forudtrænede fakturadokumenttypemodel.
Når du er færdig, skal du navigere mod Integrere sektion i venstre navigationsrude, som giver klar til brug kodestykker til at udtrække linjeposter, flade felter og tabeller ved hjælp af Nanonets API.
Ved at køre kodestykket ovenfor på vores fakturafil kan vi registrere linjeposter sammen med tabeller i API-kaldet.
Du kan også bruge vores online platform til at opsætte et automatiseret workflow og udtrække linjeposter og tabeller fra PDF-filer og billeder, konfigurere eksterne integrationer med populære ERP/software/databaser og opsætte godkendelses- og valideringsregler.
En af vores AI-eksperter kan komme på et 15-minutters opkald for at diskutere din use case, give dig en personlig demo og finde den bedste plan for dig.
Vi tilbyder bordudtræk på vores online platform samt gennem Nanonets API. Når din Nanonets-konto er oppe og køre, kan du vælge at bruge platformen i stedet for API'et til at udtrække tabeller fra dine dokumenter.
Du kan konfigurere din arbejdsgang her. Vi tilbyder færdige integrationer med flere populære ERP/software/databaser.
- automatiseret import og eksport til ERP/software/database
- opsætte automatiserede godkendelses- og valideringsregler
- konfigurere efterbehandling efter ekstraktion
En af vores AI-eksperter kan komme på et 15-minutters opkald for at diskutere din use case, give dig en personlig demo og finde den bedste plan for dig.
Der er en masse gratis online OCR-værktøjer, som kan bruges til at udføre OCR og udtrække tabeller online. Det er simpelthen et spørgsmål om at uploade dine inputfiler, vente på, at værktøjet behandler og giver output, og derefter downloade outputtet i det ønskede format.
Her er en liste over gratis online OCR-værktøjer, som vi leverer –
Har du en virksomheds OCR/Intelligent Document Processing use case? Prøv Nanonets
Vi leverer OCR- og IDP-løsninger, der er skræddersyet til forskellige brugssager - kreditorautomatisering, fakturaautomatisering, debitorautomatisering, kvittering / ID-kort / DL / Pas OCR, integration af regnskabssoftware, BPO-automatisering, tabeludtræk, PDF-udtræk og mange flere. Udforsk vores produkter og løsninger ved hjælp af rullemenuerne øverst til højre på siden.
Antag for eksempel, at du har et stort antal fakturaer, der genereres hver dag. Med Nanonets kan du uploade disse billeder og lære din egen model, hvad du skal kigge efter. For eksempel: I fakturaer kan du bygge en model til at udtrække produktnavne og priser. Når dine annoteringer er færdige, og din model er bygget, er det lige så nemt at integrere den som at kopiere 2 linjer kode.
Her er et par grunde til, at du bør overveje at bruge nanonetter -
- Nanonets gør det nemt at udtrække tekst, strukturere de relevante data i de påkrævede felter og kassere de irrelevante data udtrukket fra billedet.
- Fungerer godt med flere sprog
- Klarer sig godt på tekst i naturen
- Træn på dine egne data for at få det til at fungere for din use-case
- Nanonets OCR API giver dig mulighed for nemt at genoptræne dine modeller med nye data, så du kan automatisere dine operationer hvor som helst hurtigere.
- Ingen in-house team af udviklere påkrævet
Besøg Nanonetter til virksomheds OCR- og IDP-løsninger.
Tilmeld dig for at starte en gratis prøveperiode.
- SEO Powered Content & PR Distribution. Bliv forstærket i dag.
- Platoblokkæde. Web3 Metaverse Intelligence. Viden forstærket. Adgang her.
- Kilde: https://nanonets.com/blog/extract-tables-from-pdf-in-python/
- :er
- $OP
- 1
- 100
- 7
- a
- over
- af udleverede
- Ifølge
- Konto
- Bogføring og administration
- Konti
- gældsforpligtelser
- kreditorautomatisering
- tværs
- tilføjet
- adresse
- Vedtagelse
- Efter
- AI
- Alle
- tillader
- alternativer
- beløb
- ,
- nogen
- overalt
- api
- Indløs
- godkendelse
- ER
- Array
- AS
- At
- attributter
- Auth
- autentificere
- automatisere
- Automatiseret
- Automation
- til rådighed
- BE
- være
- jf. nedenstående
- BEDSTE
- Blog
- bygge
- bygget
- Bunch
- by
- ringe
- kaldet
- CAN
- Kan få
- kort
- Kort
- tilfælde
- tilfælde
- Celler
- karakter
- karaktergenkendelse
- Vælg
- kode
- Kolonne
- Kolonner
- KOM
- fuldføre
- Overvej
- konsekvent
- Bestående
- indeholder
- konvertere
- kopiering
- Oprettelse af
- Krydset
- skik
- data
- databaser
- dag
- beskrivelse
- ønskes
- opdaget
- udviklere
- DID
- diskutere
- dokumentet
- dokumenter
- kørsel
- hver
- indsats
- elementer
- beskæftiger
- Motorer
- Enterprise
- Miljø
- miljøer
- ERP
- anslået
- etc.
- Hver
- hver dag
- hverdagen
- eksempel
- eksisterende
- erfaring
- eksperter
- udforske
- eksport
- udvide
- ekstern
- ekstrakt
- hurtigere
- få
- felt
- Fields
- File (Felt)
- Filer
- Finde
- Fornavn
- flad
- Til
- format
- Framework
- Gratis
- gratis prøveversion
- fra
- funktionalitet
- Endvidere
- genereret
- få
- få
- Giv
- given
- giver
- Go
- mål
- Have
- have
- link.
- HTTPS
- ID
- billede
- billeder
- gennemføre
- importere
- import
- in
- uafhængig
- oplysninger
- iboende
- indgang
- installere
- i stedet
- Integration
- integrationer
- Intelligent
- Intelligent dokumentbehandling
- Introduktion
- IT
- Varer
- selv
- Job
- json
- etiket
- Etiketter
- stor
- lag
- Bibliotek
- licenser
- ligesom
- Line (linje)
- linjer
- Liste
- Se
- leder
- maskine
- lave
- maerker
- manuel
- manuelt
- mange
- Matter
- model
- modeller
- mere
- flere
- navn
- navne
- Natur
- Naviger
- Navigation
- Behov
- Ny
- bemærkede
- nummer
- bedøvet
- objekt
- objekter
- OCR
- of
- tilbyde
- Tilbud
- on
- ONE
- online
- online ocr værktøjer
- open source
- Produktion
- optisk tegngenkendelse
- organisatorisk
- original
- egen
- side
- pandaer
- brød
- pas
- Mennesker
- Udfør
- udfører
- Personlig
- telefon
- fly
- perron
- Platforme
- plato
- Platon Data Intelligence
- PlatoData
- Punkt
- Populær
- Indlæg
- forudsigelse
- Forudsigelser
- forudsætninger
- præsentere
- pris
- Priser
- behandle
- forarbejdning
- Produkt
- Produkter
- give
- Python
- mængde
- Læs
- klar
- årsager
- kvitteringer
- anerkendelse
- relevant
- pålidelig
- rendering
- erstatte
- anmodninger
- påkrævet
- svar
- resultere
- RÆKKE
- regler
- Kør
- kører
- tjener
- sæt
- indstilling
- flere
- bør
- signering
- ganske enkelt
- enkelt
- So
- Software
- Løsninger
- nogle
- står
- starte
- påbegyndt
- Starter
- opbevaret
- strøm
- struktur
- struktureret
- sådan
- support
- bord
- bordudtræk
- Tag
- tager
- hold
- teknologisk
- Teknologier
- at
- verdenen
- deres
- Them
- Disse
- Gennem
- gange
- til
- i dag
- værktøj
- værktøjer
- top
- I alt
- mod
- traditionelt
- Transform
- retssag
- trillion
- tutorial
- typer
- enhed
- Uploading
- URL
- us
- brug
- brug tilfælde
- validering
- forskellige
- Venter
- GODT
- Hvad
- som
- vilje
- KLOG
- med
- Arbejde
- world
- Du
- Din
- dig selv
- youtube
- zephyrnet