Automatische Barcode- en QR-codeherkenning voor foto-indexering met Python

4 September 2024

Vandaag kreeg ik de vraag of het mogelijk zou zijn om op een geautomatiseerde manier een visuele bibliotheek van opslaglocaties samen te stellen. Gebruiksgemak is een belangrijke vereiste, waardoor het automatisch vastleggen van de opslaglocatie met een trigger moet plaatsvinden. Deze trigger activeert een camera die een JPG-snapshot maakt. De opslaglocaties zijn voorzien van QR-codes, zodat elke foto naast de visuele weergave van de opslaglocatie ook de bijbehorende logistieke informatie bevat.

Om de visuele logistieke QR-gegevens om te zetten in nuttige, doorzoekbare data is QR-codeherkenning nodig. Binnen de Python-omgeving zijn hiervoor diverse bibliotheken beschikbaar. Zodra de QR-code is herkend, wordt de logistieke informatie gebruikt om een bestandsnaam samen te stellen. Op deze manier kunnen foto’s automatisch worden gecategoriseerd en geïndexeerd, en is het mogelijk om elektronisch snel toegang te krijgen tot de meest recente snapshot van de opslaglocatie.

Als proof of concept heb ik een Python-script ontwikkeld dat regelmatig controleert of er nieuwe bestanden in een vooraf vastgestelde map zijn toegevoegd. Zodra er nieuwe bestanden zijn, worden deze door het script visueel geanalyseerd en wordt de data uit de QR-code als variabele beschikbaar gesteld. Het verwerkte bestand wordt naar de archiefmap verplaatst, en het bestand met logistieke informatie en timestamp wordt in de result-map geplaatst. Dit resultaatbestand kan worden benaderd via een webserver, waarbij gefilterd kan worden op de laatste snapshots van de verschillende opslaglocaties. Daarnaast kan van elke opslaglocatie een tijdsoverzicht worden weergegeven, waarmee visueel kan worden geanalyseerd op welk tijdstip bepaalde attributen zijn verwijderd of juist toegevoegd.

Dit soort proof of concepts is leuk om te ontwikkelen. Ik kan mijn ervaring uit andere projecten op verschillende manieren toepassen, en door de zoektocht naar de ontbrekende schakels breidt mijn kennis zich voortdurend uit. De volgende stap is het electromechanische deel, waarbij een trigger wordt gerealiseerd met behulp van een hall-sensor en de Raspberry Pi LibCamera-bibliotheek. De hall-sensor is verbonden met een van de GPIO-pinnen van de Raspberry Pi. Een watchdog-script controleert of er nieuwe foto’s beschikbaar zijn, en de crontab zorgt ervoor dat het indexactieproces van de foto’s regelmatig een efficiencyroutine doorloopt.