Lemmont / Safe-PDF-Redaction-Tool

'A safe PDF redaction tool' Thesis project in which I aim to create a tool which leaves no traces of the redacted text and keeps the other text intact.
0 stars 0 forks source link

update 17-11 #6

Open Lemmont opened 11 months ago

Lemmont commented 11 months ago

Hoi @maartenmarx ! Hierbij de wekelijkse update.

Prestaties

Deze week was minder productief dan gepland, maar ik heb ondanks de beperkte tijd een aantal zaken kunnen uitwerken. Ik heb nagedacht over een mogelijk ontwerp, ben verder aan de slag gegaan met het begrijpen van PDF en heb nog wat geschreven aan concept stukjes in mijn scriptie.

De log van deze week (enigszins beperkt deze keer)

Ontwerp

Het ontwerp, alhoewel nog niet definitief, zal bestaan uit 4 onderdelen.

  1. Het selecteren van hetgeen dat weggelakt moet worden.
  2. Het weglak proces
  3. Semantische invulling geïnspireerd/gebaseerd op dit werk.
  4. Metadata verwijdering/toevoeging

Het weglak proces zal bestaan uit het daadwerkelijk verwijderen van de tekst uit het pdf document d.m.v. een eigen gemaakte algoritme. Het doel is om dit algoritme automatisch naar de PDF content te laten kijken en de aangegeven stukjes daaruit te laten verwijderen. Tijdens het selectieproces wil ik ook de gebruiker laten weten of het geselecteerde stuk tekst ergens anders voorkomt en hem/haar de mogelijkheid geven om dat ook te laten verwijderen.

Tijdens het weglakken wordt de tekst verwijderd uit de PDF. Deze zal dus na het process niet meer terug te vinden zijn. Daarnaast moet ik rekening houden met eventuele informatie die achterblijft. Bijvoorbeeld over characters in het font of versiegeschiedenis. Ook positionele informatie moet weggehaald worden of aangepast. Ik voorzie dat deze laatste kwesties lastig worden.

Een wenselijke toevoeging op mijn algoritme is het invullen van de gemaakte gaten in de tekst. Het liefst wil men de semantische betekenis en context behouden in een document. Maarten Marx wordt dan bijv. Persoon a en 26 Maart 2023 wordt dan bijv. datum 1, datum 2023 of maand jaar.

Tenslotte wil ik de gebruiker de mogelijkheid geven om een goede beschrijving van het document achter te laten in de vorm van metadata, dit i.v.m. toegankelijkheid. Hopelijk lukt het mij om zelf al grotendeels die metadata automatisch in te vullen nadat andere informatie eruit is verwijderd.

Al met al een uitdagend pakket aan taken die ik hoop te voltooien. De nadruk en prioriteit ligt uiteraard bij het weglakken en selecteren van tekst. Dit is dan ook de kern en hierop zal ik mij als eerst focussen. De rest zijn 'leuke dingetjes' die eventueel later nog toegevoegd kunnen worden.

PDF documenten manipuleren

Ik heb veel vooruitgang geboekt met het werken met PDF. Twee methoden van aanpak hebben de revu gepasseerd: gebruik maken van PyMuPDF functies om tekst eerst te verwijderen uit een bounding box en daarna weer er iets in te zetten of het zelf in de PDF duiken en via daar de tekst te verwijderen. De eerste methode is makkelijker, maar geeft mij minder invloed en controle over het document. Aanpassen van tekst is lastiger. De tweede methode kost heel veel werk, maar geeft me wel die controle.

Ik ben van plan om zelf in de PDF te duiken en methodes te creëren om die PDF helemaal uit te spitten. Dit geeft mij die controle, ook om zelf posities van tekst aan te passen en (hopelijk) ook eigenschappen van fonts aan te passen. Het geeft mij ook meer flexibiliteit in het controleren van interne dingen omdat de standaard 'hogere' functies van PyMuPDF niet altijd even accuraat zijn. Ik voorzie wel een nadeel en dat is dat de tijd maar beperkt is en dat ik dus wellicht niet alle mogelijke manieren van PDF constructies kan ondersteunen. Mijn focus ligt, zoals eerder besproken, bij Word documenten. Echter zijn er tussen Word versies ook weer verschillen. Ik zal mij beperken tot simpele documenten en gaandeweg uitbreiden.

Deze week heb ik voornamelijk gespeeld met hoe ik de interne representatie van documenten kan lezen en zo kan opslaan in een datastructuur dat ik makkelijk toegang heb tot relevante delen van de PDF en zo ook makkelijk het document kan manipuleren. Ik ben aardig op weg, maar heb nog veel te proberen en doen.

Tekst extractie geprobeerd en interpretatie geprobeerd

Scriptie

Ik heb geschreven aan related work, introduction en design. In het design kopje zal ik mijn ontwerp uitleggen en uitwerken. Hierbij komt ook een stukje 'pdf-theorie' kijken die ik aan de lezer ga uitleggen zodat men mijn algoritme beter zal kunnen begrijpen. Overleaf bestand

Wat heeft niet gewerkt?

Ik heb niet alle tijd goed kunnen besteden. Er waren wat andere dingen in mijn leven die ook een hoge prioriteit hadden.

PDF tekst eerst weghalen en dan vervangen door middel van hetzelfde embedded font. De positie bepalen waar het teruggeplaatst moet worden is lastig. Ik voorzie ook in het verdere verloop van dit project problemen met fonts die embedded zijn in de PDF; niet alle characters zitten in het PDF, enkel degene die erin staan. Wellicht dat een ander font gebruiken voor nieuwe ingevoegde tekst beter is!

Komende week

  1. Aan de slag met de weglak methode. Een heel python framework opzetten met een 'reader', 'interpreter' en 'manipulator' klasse. Voornamelijkste doel is om alle geselecteerde tekst weg te lakken. Deze geselecteerde tekst zal ik voor nu handmatig aanwijzen. Tekst direct uit de PDF halen, positionele data aanpassen/verwijderen, meerdere soorten fonts proberen en verschillende documenten. Een methode verzinnen om een stukje tekst dat geselecteerd is in het hele document te zoeken en te kijken of het nog ergens anders voorkomt!
  2. Verder schrijven aan design terwijl ik dingen implementeer. Alvast nadenken over een goede beschrijving van mijn algoritme.
  3. Contact opnemen met Maxwell Bland voor zijn tool waarmee ik waarschijnlijk mijn methode goed kan testen! Daarnaast alvast gaan nadenken over de manier waarop ik mijn algoritme ga testen.

Vragen

~ Lennaert

maartenmarx commented 11 months ago

Hi @Lemmont , mooi helder veraahl joh. Je bent toch echt wel een stuk verder. Hier eerst wat korte gedachten

  1. Kijk eens naar https://docs.reportlab.com/ . Ook de niet betaalde versie kan al heel veel. Ik zou eens kunnenvragen of we een tijdje ook met de betaalde mogen spelen voor niks.
  2. Dat semantische ivullen vin dik ontzettend leuk en waardevol. Als jij dat ook vind zou ik me liever hierop richten dan op de Maxwell Bland achtige security en glyphs en weet ik wat.
    • Je hoeft dat niet eens in de geprnte tekst te zetten, want die ziet een blinde toch niet. Als je het maar in de metadata/machin eleesbare data kunt zetten.

over je begin van je scriptie

Lemmont commented 11 months ago

Hoi @maartenmarx,

Ten eerste bedankt voor uw reactie en input op mijn update. Bedankt specifiek voor de beoordeling van mijn stukjes in het scriptie document en de suggesties.

Kijk eens naar https://docs.reportlab.com/ . Ook de niet betaalde versie kan al heel veel. Ik zou eens kunnenvragen of we een tijdje ook met de betaalde mogen spelen voor niks.

Ziet er handig uit. Hiermee zou men op een makkelijke wijze een nieuwe PDF kunnen opbouwen. Ik zelf heb ervaring met webpagina/applicatie ontwikkeling en deze methode heeft ongeveer dezelfde structuur. Voor nu zou ik nog niet echt een praktische toepassing kunnen bedenken voor de huidige staat van mijn project. Echter, afhankelijk van het verdere verloop zou dit wel van toepassing kunnen zijn. De functionaliteit zou dingen toelaten waarmee ik in combinatie met PyMuPDF een nieuwe PDF zou kunnen creëren en iets makkelijker dingen zou kunnen toevoegen of verwijderen, voornamelijk omdat de methode waarschijnlijk ook al meerdere soorten PDF documenten ondersteund. Ik hou het in mijn achterhoofd indien ik tegen problemen aanloop.

2. Dat semantische ivullen vin dik ontzettend leuk en waardevol. Als jij dat ook vind zou ik me liever hierop richten dan op de Maxwell Bland achtige security en glyphs en weet ik wat.

Ja persoonlijk heeft dit ook mijn voorkeur om uiteindelijk hierop meer te focussen. Het belangrijkste qua security om het Maxwell Bland verhaal op te lossen is uiteindelijk toch de daadwerkelijke tekst te verwijderen uit het document, de ruimte die het achterlaat weg te laten of op te vullen met een fixed-sized stukje tekst en tenslotte eventueel nog contextuele positie informatie aan te passen.

  • Ik kan je ook bewijs aanleveren over de "slechtheid" van de NL PDFs (OCR en SCAN).

Heel graag! Dat zal ik dan kunnen gebruiken om de context van de huidige staat van toegankelijkheid te versterken, maar ook het argument waarom direct weglakken in een PDF beter is voor dus ook die toegankelijkheid.

Zoals ik boven zei zou ik eerder focussen op toegankelijkheid dan op "super-veiligheid"

Daar zat ik inderdaad ook al aan te denken. Daar ga ik meer nadruk op leggen!

  • Die "semantische"/accesibility richting biedt ook meer perspectief op een succesvolle indiening dan de meer harde "security" kant, ook een wereled wara ik veel minder in zit.

Ik zal het meenemen in het verdere process!

maartenmarx commented 11 months ago

Leuk @Lemmont ! Hier zit dan zeker muziek in. Wat zijn jouw vervolgplannen voor na de scriptie? Er is misschien een mogelijkheid om hiermee door te gaan bij de KB. Zou dat wat voor je zijn? Daar kan je echt een verschil maken.

groet maarten

Lemmont commented 11 months ago

Hoi @maartenmarx ,

Momenteel is de planning dat ik eind januari klaar ben met dit scriptieproject (laten we er van uitgaan dat ik deze succesvol afrond) en dan dus ook met mijn bachelor. In principe heb ik dan tot de zomer nog geen verdere verplichtingen in de vorm van een studie of andere full-time bezigheid. Wellicht dat ik na de zomer een master ga doen aan de UvA, maar hierover ben ik mij nog aan het beraden. Natuurlijk heb ik wel al dingen op de planning, maar tot het heden nog niks concreets; ik hou graag mijn opties open en zoek graag naar nieuwe uitdagingen en kansen om mijn kwaliteiten en ideeën te laten floreren!

De KB staat voor de 'Koninklijke Bibliotheek' neem ik aan? Ik was daar tot op het heden nog niet bekend mee. Als u tijd heeft, zou u mij dan wat kunnen vertellen over de KB? Wellicht de relatie en ervaring die u heeft met betrekking tot dit instituut, als die er zijn.

Een eventuele mogelijkheid om hiermee verder te gaan is uiteraard erg interessant en hier zou ik zeker voor open kunnen staan na het afronden van dit project, alhoewel ik voor nu dat nog niet zeker kan zeggen.

Groet, Lennaert

maartenmarx commented 11 months ago

OK bedankt joh @Lemmont . KB is echt een gave plek voor een informaticus. Jongen die hebben zo giga veel, ook nog heel erg ontoegankelijk. En ook heel slimme bevlogen types die daar mee bezig zijn. Dat gaat om kilometers aan boeken en weet ik wat.