使用Python解码Micro QR码

Man*_*anu 7 python qr-code

我使用“ segno”通过python创建Micro QR代码:

import segno
segno.make_micro("1").save("1.png", scale=10)
Run Code Online (Sandbox Code Playgroud)

输出图像

有谁知道用python解码的(简单)方法吗?我找不到图书馆,但我担心自己(也许使用openCV)这样做会很费力。

与本文相反(如何在(最好是纯净的)Python中解码QR码图像?),我已经成功安装了PyQRCode和ZBar。不幸的是,这些库无法解码Micro QR码。

bud*_*mat 1

由于显然使用Micro QR码还没有变得足够广泛(还?),值得在我能找到的任何库中添加对读取它们的支持,因此我正在寻找一种解决方法。在我的搜索中,我遇到了一两个支持解码微型 QR 码的在线 QR 阅读器。由于我刚刚学习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()
Run Code Online (Sandbox Code Playgroud)

印刷

1
Run Code Online (Sandbox Code Playgroud)

一些注意事项:

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