DaanKuyper / DocumentSplitting

Afstudeer Thesis
0 stars 0 forks source link

update 25/11/2021 #5

Open DaanKuyper opened 2 years ago

DaanKuyper commented 2 years ago

Een zelfstanding C# project gemaakt dat instaat is alle meta data van WobDossiers en hun respectievelijke PDFDocumenten op te halen en lokaal op te slaan in JSON formaat. Verder is de applicatie in staat om op basis van de meta data een CSV bestand op te bouwen met hier meer informatie betreffende de PFD's.

Het project is ontwikkeld in Visual Studio Community (Preview 2022) en ik zou sterk aanraden om deze omgeving te downloaden om het project zelf te kunnen inzien. Echter kan ook de laatste standalone build gebruikt worden: deze is te vinden in de submap: "DocumentSplitting\bin\Release\net6.0\DocumentSplitting.exe". Hiervoor is dan wel een .NET 6.0 installatie nodig, deze is beschikbaar voor vrijwel alle besturings systemen: https://dotnet.microsoft.com/download/dotnet/6.0. Voordat de applicatie gestart kan worden moet wel naar de Config.json (te vinden in dezelfde folder als de executable) file gekeken worden om de nodige properties aan passen.

Verder kan het overzicht van alle Wob meta data gevonden worden in de map "WOB" van deze repository. Ook kan het overzicht report gevonden worden in deze repository onder de naam: "OverviewReport.csv". Hierin zijn alle 369 pdf documenten plus meta-data gedocumenteerd.

Een oplossing vinden voor het onderscheiden van verschillende PDF documenten: wanneer ontbreekt een OCR volledig? Wanneer is er al een OCR gebruikt maar volstaat de resultaten van deze wel?

Een van de voorbeelden van een onduidelijk document is als volgt: https://wobcovid19.rijksoverheid.nl/publicaties/5e745681a2659dadb7ac782f4e012350/besluit.pdf

Dit document is duidelijk ingescand en zou dus naar verwachting geen tekst elementen bevatten. Echter blijkt dat er (wellicht door het software gebruikt voor het inscannen) al een OCR heeft plaats gevonden. Als ik gebruik maak van iText's SimpleTextExtractionStrategy voor het uitlezen van alle tekst uit een pdf pagina, is te zien dat er wel degelijk tekst in het document voorkomt. Hieronder een snippet:

" > Rurares P3stbs 2000 2O3 EA Dr Hae Kabinet Mrnister-Presdent Errer’:f 1 2513 A Dec ieag Postbts 20001 2500 EA Oen Haag www ksoverhed.1 Contactpersoon Onze referentie 4 129 fl2 Datum 9 juni 2020 Betreft Wob-besluit inzake logboeken coronaDrisis ambtenaren Geachte Bij bnef van 1 mei 2020, ontvangen op 6 mei 2020. heeft u, namens bij het ministerie van Algemene Zaken een verzoek op grond... "

Dit kan ongetwijfeld verbeterd worden.. Door gebruik te maken van een online OCR tool (https://www.onlineocr.net/) was al het volgende resultaat te verkrijgen:

" Retouradres Postbus 20001 2500 EA Den Haag Kabinet Minister-President Ministerie van Algemene Zaken Datum 9 juni 2020 Betreft Wob-besluit inzake logboeken coronacrisis ambtenaren Geachte Bij beef van 1 mei 2020, ontvangen op 6 mei 2020, heeft u, namens bij het ministerie van Algemene Zaken een verzoek op grond... "

Ik ben er nog niet uit hoe ik efficient voor een document kan bepalen of een pagina tekst bevat, of deze correct is, endus of er potentieel een eigen OCR ingezet moet worden...

Verdiepen in wat er gehaald kan worden uit de documenten wanneer deze worden geparsed naar XML door middel van PDF to HTML. Hopelijk kan deze methode zorgen voor een duidelijker onderscheid tussen de documenten.

Ook kijken of er meer uit de PDF meta data te halen valt - met nadruk op het onderzoeken of de gebruikte software voor de PDF opstellen te achterhalen is.

maartenmarx commented 2 years ago

Hi @DaanKuyper ,

heel erg bedankt! EEn paar opmerkinge/tips

  1. Gebruik graag hyperlinks naar files in je repo in je issues. Dat werkt een stuk snmeller en makkelijker dan die omschrijvbingen
  2. Ik zou toch graag alle PDFs hebben. Ik kan ze op surfdrive zetten, zodat jij er ook bijkan. Kan je dus 1 keer ophalen, en me sturen met wetransfer?
  3. Kijk eens naar pdftohtml en pdftotree en natuurlijk pdfinfo (allemaal linux commands)
  4. Eigenlijk zou ik niet moielijk doen, en gewoon ALLE documenten met de beste OCRder die jij kunt vinden opnieuwe OCRen, en dan een mooie maat/methode gebruiken die de docs vergelijkt.
    • dan vind je vast ook een paar waar het niks uitmaakt, of allicht zelfs slechter wordt
    • misschien vindt je in de pdfinfo metadata wel of het geocred is.

Next todo's

  1. alle pdfs ophalen
  2. net spreadsheet op Google docs met hyperlinls nar elke pdf
  3. dossiernummer extracter ook op de paginas
  4. alles goed OCRen (bewaar alleen de text plus pdftohtrml -xml XML output) geen plaatjes natuurlijk
  5. wat eerste vergelijkingen.
    • bevat een pagina een dossiernummer
    • bevat het weggelakte stukken
  6. Neem 3 PDF documenten (perfecte tekst, best goede OCR, helemaal geen OCR), en splits die zelf op in losse documenten (maak dus een test set).
    • Probeer te leren wat mogelijke aanwijzingen zijn voor "nieuw document".

Fijn weekend!

maartenmarx commented 2 years ago

Hi @daan,

Ik ben ze (de PDFs) zelf maar even gaan downloaden, en dan merk je dat er nog flink wat misgaat. Zie mijn notebook (ja nu moet ik natuurlijk een url gebruiken ;-)).
Ik denk dat het goed is de hele boel compleet te krijgen. Dus maar met de hand te proberen als er iets mis gaat. En even opschrijven wat er nou misgaat.

De pdfs staan in https://surfdrive.surf.nl/files/index.php/s/CV0oNVP6t1FbwPf met pw wobbiewappie

Dat moet nog effe syncen hoor, hij is nog lekker bezig

maartenmarx commented 2 years ago

Hi @DaanKuyper , dit is dus wel gaaf om toe te voegen aan je csv, of in een andere te zetten:

maartens-MBP-5:CovidWOBPDFs admin$ pdfinfo ff9481e357a59c506fc16db2aab2411a_inventarislijst.pdf Author: Spies, Rink Creator: Microsoft® Excel® 2016 Producer: Microsoft® Excel® 2016 CreationDate: Fri Jan 29 15:10:21 2021 CET ModDate: Wed Jun 16 16:01:23 2021 CEST Tagged: yes UserProperties: no Suspects: no Form: none JavaScript: no Pages: 1 Encrypted: no Page size: 842.04 x 594.96 pts (A4) Page rot: 0 File size: 233062 bytes Optimized: yes PDF version: 1.5

met -meta krijg je het in xml, json zou handiger zijn natuurlijk....