corona-warn-app / cwa-app-android

Native Android app using the Apple/Google exposure notification API. The CWA development ends on May 31, 2023. You still can warn other users until April 30, 2023. More information:
https://coronawarn.app/en/faq/#ramp_down
Apache License 2.0
2.44k stars 495 forks source link

paper QR Code not readable #3514

Closed Timo1993 closed 2 years ago

Timo1993 commented 3 years ago

Hi, I got a digital certificate. When I tried to scan a QR code, it is not detected. I used a Xiaomi Redmi Note 9. The most recent app from the play store is installed. I tried it about 50 times, but it is not detected. The code itself is detected with another QR code scanner.


Internal Tracking ID: EXPOSUREAPP-8028 Internal Tracking ID: EXPOSUREAPP-10502

Ein-Tim commented 3 years ago

Sorry for being the off topic guy and the one with bad news, but I wanted to inform you about this right now...

I have some indication (report from a Twitter User) that the same problem occurs with event QR-Codes. User try to scan the QR-Code but nothing happens. I'll stay in contact with the user on Twitter reporting this, she will do some more investigation and test and if she's able to reproduce the problem reliably, she (or I) will open an issue here. She said that the QR-Code was not cut off and that the most phones with this problem are different Samsung S10 devices, a LG G8 and a One Plus device.

Ein-Tim commented 3 years ago

Could we maybe remove the mention of Xiaomi from the title here, since it also affects other devices. Maybe change it to "Vaccination Certificate not readable", or something similar.

Thanks, enjoy Friday evening!

Ein-Tim commented 3 years ago

Now we have the first user reporting an issue with a test result QR-Code, it is not recognized either: https://twitter.com/Menxar/status/1408770829941362693?s=20

thomasaugsten commented 3 years ago

So they Scan from paper at is CovPass acting in the same way?

Ein-Tim commented 3 years ago

@thomasaugsten I asked them whether they are scanning it from the paper. But as I understand it it's not a problem with a vaccination certificate but with a QR-Code for a test result (RAT or PCR) in CWA.

Jo-Achim commented 3 years ago

[OT] I think it is very important to know which app was actually used to attempt the scan and of course what was being scanned.

Using the CovPassCheck app - in offline-mode - as an example: It reports "Check unsuccessful ..." if the text "Offline mode available" is not marked with a 'check mark in the green circle' on the start screen. If the 'check mark in the green circle' - i.e. the offline mode - is available, scans (from the same paper) work correctly with CovPassCheck. Note: I cannot explain why the scan in CovPass only worked after CovPassCheck was error-free; there may have been another (local) problem.

Android 10 with Android security update: May 5th, 2021; Google Play system update: May 1st, 2021. GigaSet GS4, Build: E940-2795-00_10.0_V10_20210602 CWA version: 2.3.4 ENF: 18212002104 NetGuard Pro 2.296 Norton 360, v.5.11.0.5698 [/OT]

vaubaehn commented 3 years ago

Suggested changes by the user community to the PDF templates for a less troubled scan of QR codes have recently been implemented: https://github.com/corona-warn-app/cwa-documentation/issues/644#issuecomment-875500604 https://github.com/Digitaler-Impfnachweis/certification-apis/issues/137

Certificates issued/transmitted directly using IBM/Ubirch-System (web-frontend/backend) should receive the new layout in a couple of days. Whether the new layout will be used by independent 3rd-party-solutions that use their own templates will depend on adoption of IBM/Ubirch-templates in these parties accordingly.

🚀

heinezen commented 3 years ago

New templates:

https://github.com/Digitaler-Impfnachweis/certification-apis/tree/master/templates


Corona-Warn-App Open Source Team

P4sca1 commented 3 years ago

I noticed the same problem using a Samsung Galaxy S9. Scanning the same code with an iPhone worked fine.

Edit: I solved the issue by making a photo of the letter with the QR code, cut out the QR code and pasted it to the center of an empty white space word document on my laptop. Then scanning the QR code from the screen of my laptop worked. The issue seems to be that android phones require sufficient white space around the QR code. Another solution would likely be to cut out the QR code with a scissor and then place it on a white sheet of paper.

Also, the behavior was the same for both the CovPass and the Corona Warn App.

slaufmann commented 3 years ago

I also was not able to scan 1 of 2 QR codes from certificates issued by the same pharmacy. I use a OnePlus A500 with Android 9 (Lineage Cheeseburger).

My solution though was to use a different QR code app. And recreate the QR code from the text on a different device. That worked.

MikeMcC399 commented 3 years ago

@slaufmann

I also was not able to scan 1 of 2 QR codes from certificates issued by the same pharmacy. I use a OnePlus A500 with Android 9 (Lineage Cheeseburger).

Could you see any obvious problem with the QR code printing quality?

slaufmann commented 3 years ago

@MikeMcC399

Could you see any obvious problem with the QR code printing quality?

IMG_20210723_202733.jpg

Maybe, this corner has a bad contrast. It looks like documents that laser printers produce with the "toner save" option enabled. Also the QR-code is slightly under 5x5cm and has very small spacing (<5mm).

MikeMcC399 commented 3 years ago

@slaufmann That does look like poor printing quality. You can also see the poor printing also looking at the letters of "IMPFZERTIFIKAT".

You can compare it with the quality on https://user-images.githubusercontent.com/66998419/121585483-f014c280-ca32-11eb-83b1-38ef4a74719b.jpg (note this is the old format of the certificate), where you can see that the blocks on the corners are much clearer.

I would inform the pharmacy where you got the certificate.

Jo-Achim commented 3 years ago

Yes, I think this is a really bad print quality - without knowing how many check bits the QR code was created with. In fact, I have found that certificates created using a laser printer are usually better than certificates created using an inkjet printer. (However, if the toner or inks are 'empty', the result may be the same.)

PS @MikeMcC399: The newer version of the certificate is documented here: https://github.com/Digitaler-Impfnachweis/certification-apis/blob/master/templates/VaccinationCertificateTemplate_v3.svg.

MikeMcC399 commented 3 years ago

@Jo-Achim Thanks for the link to https://github.com/Digitaler-Impfnachweis/certification-apis/blob/master/templates/VaccinationCertificateTemplate_v3.svg. 🙂 In fact there are links to that folder in this thread, so I did know about that link, but I didn't use it because there is no QR code in it and that was what I wanted to display for comparison.

tlieshoff commented 3 years ago

Try to scan the QR code while shining a light on it. and hold your smartphone further away than the rectangle tells you.

It worked for me!

dsarkar commented 3 years ago

@slaufmann See comment https://github.com/corona-warn-app/cwa-app-android/issues/3514#issuecomment-886765519, please. Could you scan the QR code successfully?

slaufmann commented 3 years ago

@slaufmann See comment https://github.com/corona-warn-app/cwa-app-android/issues/3514#issuecomment-886765519, please. Could you scan the QR code successfully?

I tried that and it worked for one of my two certificates but more by accident I guess.

torvitas commented 3 years ago

Just use gimp to improve the contrast. Works flawless.

dsarkar commented 3 years ago

@torvitas Thanks for letting us know. We will forward internally that it must be communicated to the certificate issuers that they should improve the quality of the print out. Where did you receive the print out, pharmacy, physician, or vaccination centre?

torvitas commented 3 years ago

@torvitas Thanks for letting us know. We will forward internally that it must be communicated to the certificate issuers that they should improve the quality of the print out. Where did you receive the print out, pharmacy, physician, or vaccination centre?

As any other application that I tried so far is able to parse the code without the improved contrast I would rather suggest trying to improve the qr-code recognition implementation in the app it self.

dsarkar commented 3 years ago

@torvitas Thanks for the information, will be forwarded internally.

dsarkar commented 3 years ago

@torvitas

Thanks for your feedback.


Corona-Warn-App Open Source Team

torvitas commented 3 years ago

@dsarkar

* CWA on Android or iOS ?

Android - just wanted to mention this ticket is in the cwa-app-android repository ..

* Device model?

Samsung Galaxy S10

* In your experience, which 3rd party apps are able to scan the code without improving contrast etc?

Google Lens, Android Camera

vaubaehn commented 3 years ago

@torvitas Just to ask explicitly:

As any other application that I tried so far is able to parse the code without the improved contrast I would rather suggest trying to improve the qr-code recognition implementation in the app it self.

Google Lens, Android Camera

Have you actually checked that a valid HCERT/DCC resulted from your scans? I'm asking, because I found zxing app to read anything from the DCC, giving random results (some "numbers" that the scanner found) - obviously there was no error correction at all. And there is a chance that zxing is in the backend of Google Lens and Android Camera.

torvitas commented 3 years ago

Can't say much about if the result is a valid HCERT/DCC but I can tell you that the result of the improved and unimproved version both result in the same value when scanning with the mentioned apps.

vaubaehn commented 3 years ago

If repeated scans always result in the same value, then it's likely a valid value.

Thanks for bringing some light into this!

LauraWebdev commented 3 years ago

This sounds very similar to the problems I've had scanning my second QR Code. I'm using a Google Pixel 4 XL, running on Android 11 and while the first QR Code was accepted almost instantly (after rotating it a bunch of times), it took me ~10 tries over two days to finally get the second one to scan.

For the first day I've tried different distances & lighting conditions (first time I've tried to scan the second QR code was right outside the vaccination center in broad daylight. Other tries were made with neutral as well as non-natural light. Restarting my device and/or the app did not yield a different result.

In the end, I scanned my QR code and enhanced it through photoshop (minimized to two colors and cleaned up the QR alignment markers) and after staying on the scan screen for a few minutes, it finally went through.

dsarkar commented 3 years ago

@LauraWebdev Thanks for letting us now. We will add this report to the internal ticket.

Corona-Warn-App Open Source Team

Jo-Achim commented 3 years ago

@LauraWebdev.

I think it would be interesting ...

Was the quality of the printout of the EU certificate comparable to that of this one?

IMG_20210723_202733.jpg

And was it a printout from an inkjet or laser printer?

Ein-Tim commented 3 years ago

There's a Twitter user who says that the CWA doesn't recognize the QR code of the second certificate if it's scanned instantly after the first certificate. However, if she waits a few minutes, the scan works. Link to Twitter: https://twitter.com/infojunkie22/status/1425722208198987777?s=21

LauraWebdev commented 3 years ago

@Jo-Achim I've received my printout at the Impfzentrum Essen and I DO believe they used Inkjet printers (though I'm not 100% sure, I'm a media designer but specialized on digital media).

Here's a 1200 DPI scan of the QR code, at first glance, it does not seem too bad. From what I can tell by your image, it seems better, though some areas are similarly "spotty".

image

image

vaubaehn commented 3 years ago

There's a Twitter user who says that the CWA doesn't recognize the QR code of the second certificate if it's scanned instantly after the first certificate. However, if she waits a few minutes, the scan works. Link to Twitter: https://twitter.com/infojunkie22/status/1425722208198987777?s=21

I think that's fair enough to have a dev look into it... maybe there is an issue with zxing? Hanging for some time after a scan? Not re-initializing?

Edit: and again, an error log would help probaly in this condition 😉

Ein-Tim commented 3 years ago

@vaubaehn Okay, will request error log performing these steps:

  1. Scanning first certificate - succeed
  2. Scanning second certificate - no success
  3. Waiting for some minuters
  4. Scanning second certificate - should succeed

Agreed?

vaubaehn commented 3 years ago

@Ein-Tim

Agreed?

Yes. But the challenge will be to find the "right" user to debug this special condition: It would need someone, who is about to enter a row (at least two) certificates: from your list of steps, step 0 would need to be "enable error log"... That's maybe no too easy to achieve.

Btw, iirc I also read something like this in Google Playstore reviews...

Ein-Tim commented 3 years ago

@vaubaehn

I'll give it a try. Sadly, the CWA blog post which explains how to start an error log is iOS only (https://www.coronawarn.app/de/blog/2021-05-12-corona-warn-app-version-2-2/).

Maybe you could quickly write an how to activate the error logging in CWA Android in German so that I can transfer this to the Twitter user? As you know I don't have an Android device so I can't do it myself.

vaubaehn commented 3 years ago

@Ein-Tim

Maybe you could quickly write an how to activate the error logging in CWA Android in German

Sure:

  1. CWA öffnen.
  2. Falls nicht die Startseite angezeigt wird, auf "Startseite" klicken.
  3. Auf die 3 Punkte oben rechts im Bildschirm klicken - ein Menü öffnet sich.
  4. Im Menü "App-Informationen" auswählen.
  5. Auf der neu geöffneten Seite "Fehlerberichte" auswählen.
  6. "Fehlerbericht starten" klicken

Then continue with your steps 1 to 4 (scan certificate...)

If that twitter user dares, she may remove her certificates completely, start error log, and then try to re-scan them... But that's maybe a bit much to demand from her?

Thanks Tim ❤️

Jo-Achim commented 3 years ago

@LauraWebdev,

I think that's more of a bad quality. Otherwise your editing with Photoshop would hardly have brought anything. Was the printout of the first QR code similar to the second?

But because that can also be deceiving, here is a printout of my certificate as an example (pharmacy; laser printer, 300 dpi scan and saved as 100% jpg): EU-Impfzertifikat_v1 (Scan example changed according to the information given.)

But I think I'll leave the clarification to the experts here. In this sense.

Ein-Tim commented 3 years ago

@vaubaehn

Error Report ID: 1E763854E8E727CC0614

However, she said, that this time, it worked instantly 😅

LauraWebdev commented 3 years ago

@Jo-Achim Yes, the first QR-Code is seemingly similarly "bad", so maybe my issues came from a different area (vaccination centers not having the capabilities for proper printing)...

luxalpa commented 3 years ago

When using the App on my Samsung Galaxy S7 Edge to make a picture of the Covid certificate on the paper that I got from the pharmacy it simply does not recognize the QR code (no error, it simply doesn't do anything). I tried it in different lighting setups, rotations, zoom levels, with patience, etc and also scanned the paper into my computer and tried scanning it from the monitor.

The only way I got it to work was to scan it in the Luca App (which had no problem with the code either way), and then make a screenshot of the code in the Luca App (which looks very different and also smaller) and then scan that screenshot (opened on my monitor) with the Corona Warn App.

dsarkar commented 3 years ago

@luxalpa Thanks for reporting (also the work around you mention). We are aware that under Android there are problems with the scanning of the certificates. This is discussed internally.

Thanks. Feedback appreciated. Best wishes, DS


Corona-Warn-App Open Source Team

torvitas commented 3 years ago

@luxalpa Thanks for reporting (also the work around you mention). We are aware that under Android there are problems with the scanning of the certificates. This is discussed internally. [...]

Discussing issues of an open source project exclusively "internally" is inappropriate.

Also there is not much room for discussion. The library you are using to scan the QR-Codes is old and known to have exactly the issues we are experiencing in here. You will need to replace that ZXing library. (https://github.com/zxing/zxing/search?q=contrast&type=issues)

vaubaehn commented 3 years ago

Discussing issues of an open source project exclusively "internally" is inappropriate.

As I am following here quite long, I don't see any problem currently. You might agree, that it is not possible, that every question dev A asks dev B and the response of dev B to dev A is written down here. During the past year, we usually got informed rather fast, when solutions had been found, or questions have been left open - and we have been heard and proposals have been taken into account for development. There was a good and open discussion/communication between community and stakeholders. (and I hope, it will continue like this...)

You will need to replace that ZXing library. (https://github.com/zxing/zxing/search?q=contrast&type=issues)

I was also thinking about this, and trying to find another open source solution - but didn't succeed yet. Do you have something in mind concretely that could be used here instead? It should be compatible with OS licences used here, and also match API level (>= Android 6, better was Android >=5).

torvitas commented 3 years ago

Discussing issues of an open source project exclusively "internally" is inappropriate.

As I am following here quite long, I don't see any problem currently. You might agree, that it is not possible, that every question dev A asks dev B and the response of dev B to dev A is written down here. During the past year, we usually got informed rather fast, when solutions had been found, or questions have been left open - and we have been heard and proposals have been taken into account for development. There was a good and open discussion/communication between community and stakeholders. (and I hope, it will continue like this...)

Well, I am out.

dsarkar commented 3 years ago

@torvitas I am afraid and guess there is slight a misunderstanding! This place here is of course an open space where everybody should let us know their experience and suggestions shall be discussed here. We try to condensate and forward this information to the corresponding entities, e.g. developers if that concerns them. They cannot always answer every single comment on GH, as one might imagine they are extremely busy. We from the community management try to build the bridge where necessary between you, the community and contributors, and the development (or other entities). There are cases when developers themselves will interact here on GH with the community (you will find quite a few issues and PRs), but as said, this is not always possible.

When I write that this issue is being discussed internally, what I mean is: Yes, actually this is a topic which has been raised amongst development and also management, and it is not forgotten. A solution has not yet been found/decided.

If you have alternative means, as @vaubaehn already asked, you are more than welcome to let us know, the feedback will be apreciated very much and forwarded.

Best wishes, DS


Corona-Warn-App Open Source Team

dsarkar commented 3 years ago

HI @LauraWebdev and @vaubaehn, Quick questions: On your certificates, the QR code is printed on the left border instead of more towards the center, correct? A new template should have been used to generate these EU DCC: https://github.com/Digitaler-Impfnachweis/certification-apis/blob/master/templates/VaccinationCertificateTemplate_v4.1.svg

If they were printed on the left boarded, we would like to know:

vaubaehn commented 3 years ago

Hi @dsarkar ,

As you asked me (but I never had problems) - I got 2 different vacc certs:

  1. DCC schema 1.0.0, issued mid-June in a pharmacy, template was the "old"/first one with QR at the border (but I never had problems scanning it, as the printing quality was fine and the edge had not been cut-off)
  2. DCC schema 1.3.0, issued mid-July automatically by authorities and sent via e-mail invitation to download, template was the "new"/second one with QR centrally on the paper.
dsarkar commented 3 years ago

@vaubaehn Thanks! Actually, this was a typo ;-) .... I wanted to ask @Jo-Achim, since it looks like the old template in his comment! Anyway, good to know that in your case the new template was used.

@Jo-Achim Please, see https://github.com/corona-warn-app/cwa-app-android/issues/3514#issuecomment-903749703 Thanks.

luxalpa commented 3 years ago

@dsarkar

* The paper QR code received, how was the print quality?

Print quality seems to be very good to me.

* What size is the QR code?  5 cm ?

yes, exactly 5cm

* Does your document look like this, in particular is the QR code printed away from the border or is it at the border?
  https://github.com/Digitaler-Impfnachweis/certification-apis/blob/master/templates/VaccinationCertificateTemplate_v4.1.svg

I'd say it's pretty far from the border, and about .7cm away from the cross thing (into each direction). And yes, it does indeed look exactly like this. It seems even Firefox is able to recognize the code at least partially.