La numérisation des reçus s’avère plus délicate que prévu

C’est l’une de ces choses qui semble certainement assez simple : prenez une photo d’un reçu, faites-le passer par la reconnaissance optique de caractères (OCR) et envoyez les informations résultantes au site Web ou au logiciel de suivi des dépenses que vous souhaitez. Il existe déjà des entreprises qui proposent un tel service, il ne peut donc pas être trop difficile de le reproduire par vous-même… n’est-ce pas ?

C’est ce que [Marcel Robitaille] pensé quand il a décidé de créer son système homebrew « Receipt Ingestion », de toute façon. Mais en réalité, le dépannage et la mise en œuvre ont pris tellement de temps qu’il aurait été plus rapide de saisir tous ses reçus à la main. Nous sommes heureux qu’il s’y soit tenu, sinon vous ne le sauriez pas sur Hackaday, et nous ne pourrions rien apprendre du compte rendu détaillé qu’il a fourni.

Il n’a fallu qu’une soirée pour bidouiller ensemble une démo approximative, et les premiers résultats étaient très prometteurs. Le code pouvait détecter les bords du reçu, faire pivoter l’image capturée de manière appropriée, puis extraire les informations critiques telles que la date, le montant total, le nom de l’entreprise, etc. Il a ensuite pu déchiffrer l’API de Splitwise, un service en ligne pour fractionner des factures, en captant les données envoyées par son navigateur lors de l’ajout d’une nouvelle facture. Avec ces informations, écrire du code Python pour pousser ses données capturées dans le service était trivial. Jusqu’ici tout va bien.

Utilisation d’un code QR comme point de référence.

Mais comme tant de films d’horreur qui commencent par une famille heureuse commençant une nouvelle vie dans une belle maison, il y avait un monstre qui se cachait dans l’ombre. C’est une chose de capturer des données à partir de reçus parfaitement propres et plats, mais c’en est une autre d’obtenir des informations utiles d’un qui a passé la moitié de la journée froissé dans votre poche arrière. La preuve de concept prometteuse qui a fonctionné dans des conditions contrôlées a complètement échoué dans le monde réel, avec [Marcel] signalant que seulement 1 reçu sur 5 qu’il a essayé de numériser a effectivement été traité.

À la fin, [Marcel] réalisé que la meilleure façon de gérer l’état peu fiable des reçus était de se concentrer sur un objet différent dans l’image. Il est venu avec un marqueur de code QR qu’il pourrait mettre sur la table avec le reçu à scanner, que son logiciel peut utiliser comme point de référence connu. Cela améliore considérablement la fiabilité de la rotation et de la transformation de l’image, ce qui rend l’OCR plus fiable. Il est également beaucoup plus facile de déterminer quelles images doivent être numérisées. Si aucun code QR n’est trouvé, le logiciel ignore simplement cette prise de vue et continue de chercher.

Les défis uniques de la numérisation de grandes quantités de contenu imprimé à l’aide de l’OCR permettent de résoudre des problèmes fascinants, et nous sommes heureux [Marcel] partagé cette histoire particulière avec nous. Bien qu’il y ait encore des cas marginaux qui doivent être résolus, il utilise le logiciel presque quotidiennement et l’a publié sur GitHub pour tous ceux qui souhaitent s’appuyer sur ses efforts.