[GNC-dev] EPC QR code

Rainer Dorsch ml at bokomoko.de
Sun Jan 16 16:18:01 EST 2022


Am Sonntag, 16. Januar 2022, 19:07:21 CET schrieb Rainer Dorsch via gnucash-
devel:
> Am Sonntag, 16. Januar 2022, 18:07:31 CET schrieb john:
> > > On Jan 16, 2022, at 8:37 AM, Rainer Dorsch via gnucash-devel
> > > <gnucash-devel at gnucash.org> wrote:
> > > 
> > > Hello,
> > > 
> > > many thanks for all the effort you put in gnucash. It is a really useful
> > > and very stable tool and that for many years (even decades!)
> > > 
> > > I recent times I often see QR codes on invoices. I quick search revealed
> > > that they are standardized by the European Payments Council
> > > 
> > > https://en.wikipedia.org/wiki/EPC_QR_code
> > > 
> > > Is there any plan to support reading these QR codes with e.g. the laptop
> > > camera and extract the data required for the  SEPA credit transfer?
> > 
> > There isn't, and adding the ability to access the camera would involve
> > adding GStreamer as a dependency, not an easy task.
> 
> Thanks for you quick reply.
> 
> I dug somewhat more:
> 
> There is a tool QtQR which e.g. produces
> 
> BCD
> 001
> 1
> SCT
> SOLADES1TUB
> Landkreis T羹bingen - Kreiskasse
> DE43641500200000000048
> EUR693.00
> 
> 
> 5.1099.220039.0
> Geb羹hrenbescheid-Nr. 20220039 vom 12.01.2022
> 
> (the "Asian" letters should be the German umlaut ü, not sure what is going
> wrong there)
> 
> So calling an external tool would probably be sufficient and using the
> response.
> 
> 
> QtQR is using python3-qrtools under the hood, which are less then 300 lines
> of code.
> 
> python-qrtools has a
> 
>     def decode_webcam(self, callback=lambda s:None, device='/dev/video0'):
> 
> function.
> 
> Since I scan the invoices with the qrcode anyways using a pdf file as data
> source would also be a good approach, though it seems with python3-qrtools
> the webcam approach is more straight forward.
> 
> I can do more experimenting with python3-qrtools if you think the approach
> is viable and somebody is willing to do the gnucash integration:
> - Add a button in the SEPA transfer dialog
> - Call an external tool
> - Process the data as defined by the EPC QR code
> - Fill them in the fields of the SEPA transfer form

I thought I do a quick test:

rd at h370:~/tmp.nobackup$ cat test-ecr-qrcode.py
import qrtools

ecr=qrtools.QR()
ecr.decode("Screenshot_20220116_183429.png")
print(ecr.data_to_string().decode("utf-8"))
rd at h370:~/tmp.nobackup$ python3 test-ecr-qrcode.py 
BCD
001
1
SCT
SOLADES1TUB
Landkreis T羹bingen - Kreiskasse
DE43641500200000000048
EUR693.00


5.1099.220039.0
Geb羹hrenbescheid-Nr. 20220039 vom 12.01.2022

rd at h370:~/tmp.nobackup$ 

All data is there, the umlaut probably needs more investigation. I suspect 
some mapping or filter needs to be added to the Python code, since the QRCode 
accepts UTF-8 but a SEPA transfer supported character set is limited.

Rainer

-- 
Rainer Dorsch
http://bokomoko.de/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Screenshot_20220116_183429.png
Type: image/png
Size: 57663 bytes
Desc: not available
URL: <http://lists.gnucash.org/pipermail/gnucash-devel/attachments/20220116/a6966fc0/attachment-0001.png>


More information about the gnucash-devel mailing list