Converteer PDF-gegevens naar database-items PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Converteer PDF-gegevens naar databasevermeldingen

Verschillende organisaties en bedrijven vertrouwen op PDF-documenten om belangrijke documenten te delen, zoals facturen, loonstroken, financiën, werkbonnen, ontvangstbewijzen en meer. PDF's zijn echter niet de standaardindelingen voor het opslaan van historische gegevens, omdat ze niet gemakkelijk kunnen worden geëxporteerd en georganiseerd in workflows. Dus mensen gebruiken algoritmen voor het extraheren van informatie om PDF's en gescande documenten te digitaliseren in gestructureerde formaten zoals JSON, CSV, tabellen of Excel die gemakkelijk kunnen worden omgezet in andere organisatorische workflows.

In sommige gevallen bevatten PDF's essentiële informatie die moet worden verwerkt in verschillende ERP's, CMS en andere databasegestuurde systemen. Helaas hebben PDF-documenten geen gemakkelijke PDF naar database-functie, en het schrijven van scripts of het bouwen van een workflow rond deze taak is een beetje ingewikkeld. Dit is waar OCR- en Deep Learning (DL)-algoritmen in beeld komen om gegevens uit deze PDF-indelingen te extraheren en naar een database te exporteren. In deze blogpost zullen we verschillende manieren bekijken om dat te bereiken door gebruik te maken van DL-technologieën en enkele populaire API's op de markt.

Wat is PDF naar databaseconversie?

PDF naar databaseconversie is de taak van het exporteren van gegevens uit PDF's naar een database zoals Postgres, Mongo, MySQL, enz.

Stel dat we een webapplicatie of een ERP-systeem zouden bouwen die factuurinformatie uit verschillende bronnen bevat en onderhoudt. Het handmatig toevoegen van historische facturen aan een database is een zware taak en is zeer foutgevoelig. Aan de andere kant is het mogelijk dat het gebruik van een eenvoudige OCR niet nauwkeurig tabellen uit facturen extraheert.

Dit is waar geavanceerde AI-gestuurde conversie van PDF naar database van pas komt!

Kan dit AI-gestuurde conversieproces van PDF naar database worden geautomatiseerd? - Ja.

In de onderstaande secties gebruiken we computervisie en deep learning om tabelregio's van gescande documenten te detecteren. Deze tabellen worden verder opgeslagen in een bepaald gegevensformaat zoals CSV of Excel en worden rechtstreeks in databases gepusht.

Laten we, voordat we deze bespreken, enkele gebruikssituaties begrijpen waarin detectie van PDF naar database nuttig kan zijn.

Verschillende use-cases voor PDF naar Databases

Databases zijn de beste manieren om informatie op te slaan in zowel cloud- als lokale opslag. Ze stellen ons in staat om verschillende bewerkingen en manipulaties uit te voeren met behulp van eenvoudige zoekopdrachten. Hier zijn enkele use-cases die sterk kunnen worden geoptimaliseerd met een geautomatiseerde workflow voor conversie van PDF naar database:

  1. Factuurbeheer op het web: Bedrijven en organisaties hebben dagelijks met meerdere facturen te maken; en het is moeilijk voor hen om elke factuur handmatig te verwerken. Soms maken en ontvangen ze ook facturen in een niet-digitaal formaat, waardoor ze moeilijker te traceren zijn. Daarom vertrouwen ze op webgebaseerde applicaties die al hun facturen op één plek kunnen opslaan. Een PDF naar database-converter zou de gegevensextractie van de facturen naar de webapplicatie kunnen automatiseren. Om deze taken efficiënt te automatiseren, zouden we cron-jobs kunnen uitvoeren en deze kunnen integreren met services van derden, zoals n8n en Zapier. Wanneer een nieuwe factuur wordt gescand en geüpload, kan deze het algoritme uitvoeren en deze automatisch in tabellen pushen.
  2. ECom Voorraadbeheert: Veel e-com voorraadbeheer verloopt nog steeds via handmatige invoer van producten vanuit PDF's en gescande kopieën. Ze moeten echter al hun gegevens uploaden naar factureringsbeheersoftware om al hun producten en verkopen bij te houden. Daarom kan het gebruik van het conversiealgoritme van tabel naar database helpen bij het automatiseren van hun handmatige invoer en het besparen van bronnen. Dit proces omvat doorgaans het scannen van de inventarislijst van gescande documenten en het exporteren ervan naar specifieke databasetabellen op basis van verschillende bedrijfsregels en voorwaarden.
  3. Gegevensextractie uit enquêtes: Om feedback en andere waardevolle informatie te verzamelen, voeren we meestal een enquête uit. Ze bieden een cruciale bron van gegevens en inzichten voor bijna iedereen die betrokken is bij de informatie-economie, van bedrijven en de media tot overheid en academici. Wanneer deze online worden verzameld, is het eenvoudig om de status van de tabelgegevens te extraheren op basis van de gebruikersreactie en deze naar een database te uploaden. In de meeste gevallen zijn de antwoorden op de enquête echter op papier. In dergelijke gevallen is het super moeilijk om handmatig informatie te verzamelen en op te slaan in een digitaal formaat. Daarom kan het vertrouwen op een tabel naar database-algoritmen tijd besparen en ook extra kosten besparen.

Hoe informatie uit PDF's extraheren naar relationele en niet-relationele databases?

Een PDF-bestand wordt gezien als twee verschillende typen, elektronisch gegenereerd en niet-elektronisch gegenereerd.

  1. Elektronische PDF's: Dit gescande PDF-document bevat mogelijk verborgen tekst achter de afbeelding; deze worden ook wel elektronisch gegenereerde pdf's genoemd.
  2. Niet-elektronische PDF's: in dit type zien we meer inhoud hard gecodeerd als afbeeldingen. Dit is het geval wanneer u een hardcopy document laat scannen naar een PDF-bestand.

We konden vertrouwen op eenvoudige programmeertalen en frameworks zoals Python en Java voor het eerste type (elektronisch gegenereerd). Voor de niet-elektronisch gegenereerde PDF's moeten we Computer Vision-technieken gebruiken met OCR en deep learning. Deze algoritmen zijn echter mogelijk niet hetzelfde voor alle algoritmen voor het extraheren van tabellen, en ze zullen moeten veranderen afhankelijk van het type gegevens om een ​​hogere nauwkeurigheid te bereiken. NLP (Natural Language Processing) wordt ook gebruikt om de gegevens in tabellen te begrijpen en in sommige gevallen te extraheren.

Aan de andere kant zijn er twee soorten databases (relationeel en niet-relationeel); elk van deze databases heeft verschillende sets regels op basis van hun architectuur. Een relationele database is gestructureerd, wat betekent dat de gegevens zijn georganiseerd in tabellen. Enkele voorbeelden zijn MySQL, Postgres, enz.

Daarentegen is de niet-relationele database documentgericht, wat betekent dat alle informatie in meer een waslijstvolgorde wordt opgeslagen. Binnen een enkel constructordocument worden al uw gegevens vermeld, bijvoorbeeld MongoDB.

PDF naar een database wanneer documenten elektronisch worden gegenereerd

Zoals besproken, is het extraheren van tabellen voor elektronisch gegenereerde PDF's eenvoudig. Het idee is om tabellen te extraheren en vervolgens eenvoudige scripts te gebruiken om ze te converteren of toe te voegen aan tabellen. Voor het extraheren van tabellen uit PDF's zijn er hoofdzakelijk twee technieken.

Techniek #1 Stroom: Het algoritme ontleedt tabellen op basis van witruimten tussen cellen om een ​​tabelstructuur te simuleren, waarbij wordt vastgesteld waar de tekst niet aanwezig is. Het is gebouwd op de functionaliteit van PDFMiner om tekens op een pagina te groeperen in woorden en zinnen met behulp van marges. Bij deze techniek worden eerst de rijen gedetecteerd door ruwe schattingen te maken op basis van de positie op de y-as van de tekst (dwz de hoogte). Alle tekst op dezelfde regel wordt beschouwd als onderdeel van dezelfde rij. Vervolgens wordt de lezer gegroepeerd en als een andere groep samengesteld om de kolommen in de tabel te identificeren. Ten slotte wordt de tabel samengesteld op basis van de rijen en kolommen die in eerdere stappen zijn gedetecteerd.

Techniek #2 Rooster: In tegenstelling tot de stroom is Lattice meer deterministisch. Dit betekent dat het niet afhankelijk is van gissingen; het analyseert eerst tabellen met gedefinieerde lijnen tussen cellen. Vervolgens kan het automatisch meerdere tabellen op een pagina parseren. Deze techniek werkt in wezen door naar de vorm van polygonen te kijken en de tekst in de tabelcellen te identificeren. Dit zou eenvoudig zijn als een PDF een functie heeft die polygonen kan identificeren. Als dat zo was, zou het waarschijnlijk een methode hebben om te lezen wat erin staat. Dat doet het echter niet. Daarom wordt computervisie op grote schaal gebruikt om deze vormen te identificeren en de inhoud van de tabel te extraheren.

De geëxtraheerde tabellen worden voornamelijk opgeslagen in een dataframe-indeling. Het is een van de native gegevenstypen die wordt aangeboden door een van de meest populaire Python-bibliotheekpanda's. Er zijn verschillende voordelen van het opslaan van tabelgegevens in een dataframe. Ze kunnen eenvoudig worden verwerkt, gemanipuleerd en geëxporteerd naar verschillende formaten, zoals JSON, CSV of tabellen. Voordat we deze gegevensframes in tabellen pushen, moeten we echter eerst verbinding maken met de DB-clientdatabase en vervolgens de tabel migreren. Met behulp van talen zoals Python kunnen we verschillende bibliotheken vinden die verbinding kunnen maken met deze gegevensbronnen en gegevens kunnen exporteren.

PDF naar de database wanneer documenten niet elektronisch worden gegenereerd

De hierboven besproken technieken werken mogelijk niet voor niet-elektronisch gegenereerde PDF's, omdat de gegevens hier handmatig worden gescand via een andere bron. Daarom zullen we OCR- en Deep Learning-technieken gebruiken om gegevens uit gescande documenten te extraheren en naar databases te exporteren.

Kortom, Optical Character Recognition, OCR is een speciaal hulpmiddel dat gedrukte letters van gescande documenten omzet in bewerkbare tekst. Om PDF-tabellen uit documenten te identificeren, moeten we eerst de positie van de tabel identificeren en vervolgens OCR toepassen om gegevens uit tabelcellen te extraheren. Hieronder volgen de stappen hoe dit wordt bereikt:

  1. Eerst detecteren we de lijnsegmenten door horizontale en verticale contouren toe te passen.
  2. De lijnkruisingen tussen lijnen worden gedetecteerd door te kijken naar de intensiteit van de pixels van alle lijnen. Als een lijnpixel meer intensiteit heeft dan de rest van de pixel, maakt hij deel uit van twee lijnen en dus een snijpunt.
  3. De randen van de tafel worden bepaald door te kijken naar de intensiteit van de pixels van gekruiste lijnen. Hier worden alle pixels van een lijn genomen, en de meest externe lijnen vertegenwoordigen de grenzen van de tabel.
  4. De beeldanalyse wordt vertaald naar de PDF-coördinaten, waar de cellen worden bepaald. De tekst wordt toegewezen aan een cel op basis van de x- en y-coördinaten.
  5. OCR wordt toegepast op de coördinaten om de tekst te extraheren
  6. De geëxtraheerde tekst wordt geëxporteerd naar een gegevensframe op basis van de positie van de tabel.

Dit is hoe we tabellen kunnen extraheren met CV. Er zijn hier echter een paar nadelen. Deze algoritmen werken niet voor grote tabellen en tabellen met verschillende sjabloonstijlen. Dit is waar diep leren om de hoek komt kijken; ze gebruiken een speciaal soort neuraal netwerkkader om van gegevens te leren en vergelijkbare patronen te identificeren op basis van de lessen. In de afgelopen tien jaar hebben ze state-of-the-art prestaties bereikt, vooral voor taken zoals het extraheren van informatie. Laten we nu eens kijken hoe diepe neurale netwerken kunnen leren van gegevens en tabellen uit elk document kunnen extraheren.

Het trainen van diepe neurale netwerken omvat een specifieke workflow; deze workflows worden vaak gewijzigd op basis van het type gegevens waarmee we werken en de prestaties van hun model. De eerste fase van de workflow omvat het verzamelen van de gegevens en het verwerken ervan op basis van ons model. In ons geval van het extraheren van de tabellen uit de PDF-documenten, zou de dataset idealiter ongestructureerde documenten moeten bevatten. Deze documenten worden omgezet in afbeeldingen, geladen als tensoren en klaargemaakt als een dataloaderklasse voor training. Vervolgens definiëren we meestal alle hyperparameters die nodig zijn voor training. Deze omvatten meestal het instellen van de batchgrootte, verliesfunctie, optimalisatie voor het model. Ten slotte wordt een neurale netwerkarchitectuur gedefinieerd of gebouwd bovenop een vooraf gedefinieerd model. Dit model wordt getraind op basis van gegevens en verfijnd op basis van de prestatiestatistieken.

Hieronder volgt een screenshot van verschillende stappen die betrokken zijn bij het trainen van een deep learning-model:

Typische ML-workflow (bron)

Gegevens uit pdf extraheren en exporteren naar SQL-database met Python

Tot nu toe hebben we geleerd wat conversie van pdf naar database is en hebben we enkele use-cases besproken waar het nuttig kan zijn. In deze sectie wordt dit probleem praktisch benaderd met behulp van Computer Vision en worden tabellen in gescande pdf's gedetecteerd en geëxporteerd naar databases. Zorg ervoor dat u Python en OpenCV op uw lokale computer installeert. Als alternatief kunt u een online Google Collab-notebook gebruiken.

Stap 1: Installeer Tabula en Panda's

In dit voorbeeld gebruiken we Tabula en Panda's om tabellen te extraheren en naar databases te pushen. Laten we ze via pip installeren en in ons programma importeren.

import tabula
import pandas as pd

Stap 2: Tabellen in Dataframe lezen

Nu gebruiken we de read_pdf functie van tabula om tabellen uit PDF's te lezen; merk op dat deze bibliotheek alleen werkt op PDF-documenten die elektronisch zijn gegenereerd. Hieronder volgt het codefragment:

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

df = pd.concat(table)

Hier, zoals we kunnen zien, gebruiken we eerst om de inhoud van het PDF-bestand te lezen, we stellen de parameter in multiple_tables naar False, aangezien het document dat in het voorbeeld wordt gebruikt slechts één tabel heeft.

Nu zullen we deze lijst in een dataframe laden met behulp van panda's, en je kunt het type tabel controleren met behulp van de typemethode; dit retourneert een native panda's-gegevensframe.

Stap 3: Dataframe migreren naar Postres

Voordat we onze tabel in databases pushen, moeten we er eerst een verbinding mee maken vanuit ons programma, en we kunnen dit doen met behulp van de sqlalchemy klant in python. Evenzo bieden verschillende programmeertalen dit soort databaseclients om rechtstreeks vanuit onze programma's met databases te communiceren.

In dit programma gebruiken we de create_engine methode waarmee we verbinding kunnen maken met de database; zorg ervoor dat u de databasereferenties in de gegeven string vervangt om dit te laten werken. Vervolgens gebruiken we de write_frame functie om de geëxtraheerde tabel naar de verbonden database te exporteren.

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

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

En zo waren we in staat om tabellen van PDF's naar de database te exporteren, dit ziet er vrij eenvoudig en gemakkelijk uit omdat we een eenvoudig verwerkte elektronisch gegenereerde PDF hebben gebruikt. Voor het extraheren van tabellen uit niet-elektronisch gegenereerde tabellen zijn de volgende populaire deep learning-technieken die kunnen worden gebruikt:

  1. Papers met code - GFTE: op grafieken gebaseerde extractie van financiële tabellen
  2. Papers with Code - PubTables-1M: Op weg naar een universele dataset en metrische gegevens voor het trainen en evalueren van tabelextractiemodellen
  3. TableNet: Deep Learning-model voor end-to-end tabeldetectie en data-extractie in tabelvorm uit gescande documentafbeeldingen

Voer Nanonetten in: geavanceerde OCR voor conversie van PDF-tabel naar database

In dit gedeelte wordt bekeken hoe Nanonets ons kan helpen om tabellen op een meer aanpasbare en gemakkelijkere manier in de database uit te voeren.

Nanonets™ is een cloudgebaseerde OCR die kan helpen bij het automatiseren van uw handmatige gegevensinvoer met behulp van AI. We zullen een dashboard hebben waar we onze OCR-modellen kunnen bouwen/trainen op onze data en ze kunnen transporteren in JSON/CSV of elk gewenst formaat. Hier zijn enkele voordelen van het gebruik van Nanonets als PDF-documentscanner.

Een van de hoogtepunten van Nanonets is de eenvoud die de service met zich meebrengt. Men kan voor deze diensten kiezen zonder enige programmeerachtergrond en eenvoudig PDF-gegevens extraheren met geavanceerde technologie. Het volgende is een korte schets van hoe gemakkelijk het is om PDF naar de database te converteren.

Stap 1: Ga naar nanonets.com en registreer/log in.

Converteer PDF-gegevens naar database-items PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Stap 2: Ga na registratie naar het gedeelte "Kies om aan de slag te gaan", waar u de vooraf gebouwde extractors kunt gebruiken of er zelf een kunt maken met uw dataset. Hier zullen we de vooraf gebouwde factuurextractor voor facturen gebruiken.

Converteer PDF-gegevens naar database-items PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Stap 3: Upload PDF van afbeeldingen om gegevensextractie uit te voeren en kies de optie voor automatisch extraheren.

Converteer PDF-gegevens naar database-items PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Stap 4: Maak een nieuwe integratie MySQL-integratie om geëxtraheerde gegevens naar de database te exporteren. Als alternatief kunt u verschillende opties kiezen op basis van de databases van uw keuze.

Converteer PDF-gegevens naar database-items PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Breng een gegevensverbinding tot stand en klik op integratie toevoegen. Hiermee worden de gegevens geëxtraheerd en automatisch geüpload naar een database wanneer bestanden worden geüpload. Als u de vereiste integraties niet vindt, kunt u altijd de Nanonets API gebruiken en eenvoudige scripts schrijven om de automatisering voor elkaar te krijgen.

Tijdstempel:

Meer van AI en machine learning