使用Python解码Micro QR码

时间:2017-03-23 09:46:48

标签: python qr-code

我用过" segno"用python创建Micro QR码:

import segno
segno.make_micro("1").save("1.png", scale=10)

Output Image

有没有人知道用python解码这些(简单)的方法?我找不到一个图书馆,但我担心自己(也许是使用openCV)会有很多努力。

与这篇文章(How to decode a QR-code image in (preferably pure) Python?)相比,我已经成功安装了PyQRCode和ZBar。不幸的是,这些库不会解码 Micro QR码。

1 个答案:

答案 0 :(得分:2)

由于使用 Micro QR 代码的 apparently 还没有变得足够广泛(还没有?)值得在我能找到的任何图书馆中添加对阅读它们的支持,我正在寻找一种解决方法。在我的搜索中,我遇到了一两个支持解码微二维码的在线二维码阅读器。因为我刚刚在学习 Playwright for Python,所以我想,我应该试一试。

下面的代码使用playwright打开一个在线二维码解码器网站,点击页面设置正确选项,上传图片文件,然后从页面读取结果。

我知道这是一种完全复杂的方式,没有人会在生产代码中这样做,但它很有趣并且确实工作:)尽管它不符合“简单”的条件OP 要求,恐怕。

from playwright import sync_playwright
import segno

segno.make_micro("1").save("1.png", scale=10)

with sync_playwright() as p:
   browser = p.firefox.launch(headless=False)
   page = browser.newPage()
   page.goto('https://www.datasymbol.com/barcode-reader-sdk/barcode-reader-sdk-for-windows/online-barcode-decoder.html')
   page.querySelector('select[name=\"sr\"]').selectOption([{'label': 'Text'}])
   page.querySelector('img[alt=\"QRCode Decoder Scanner Settings\"]').click()
   page.querySelector('input[name=\"qrmicro\"]').click()
   page.querySelector('input[id=\"fupload1\"]').setInputFiles('1.png')
   page.querySelector('input[type=\"button\"]').click()
   iframe = page.querySelector('iframe[name=\"f2\"]').contentFrame()
   result = iframe.querySelector('css=pre').innerHTML().rstrip()
   print(result)
   browser.close()

印刷品

1

一些注意事项:

  • 如果您不想在执行过程中看到该页面,只需删除 headless=False
  • 显然,至少使用我选择的服务有一个非常令人不快的限制:如果您编码的文本长于两个字符,则网站会将前两个字符更改为 **,因此如果您编码One Two Three 您将检索 **e Two Three。如果您不自己创建条形码,这是一个限制。如果这样做,只需在内容的开头添加 **
  • 如果您确实想使用远程服务,但又不想通过 Web 界面使用复杂的方式,则可以使用提供直接 API 的服务,例如与requests。我上面选择的网站显然也提供了类似的东西,而且似乎有一个免费的计划。但我从来没有用过,所以我不能说什么。