Usé "segno" para crear códigos Micro QR con python:
import segno segno.make_micro("1").save("1.png", scale=10)
¿Alguien sabe de una forma (simple) de decodificarlos con python? No pude encontrar una biblioteca, pero me temo que hacer esto yo mismo (tal vez con openCV) será un gran esfuerzo.
En contraste con esta publicación ( ¿Cómo decodificar una imagen de código QR en Python (preferiblemente puro)? ), Ya instalé con éxito PyQRCode y ZBar. Desafortunadamente, estas bibliotecas no decodifican los códigos Micro QR.
Dado que aparentemente el uso de códigos Micro QR no se ha generalizado lo suficiente (¿todavía?) como para agregar soporte para leerlos en cualquier biblioteca que pude encontrar, estaba buscando una solución alternativa. En mi búsqueda encontré uno o dos lectores QR en línea que admiten la decodificación de microcódigos QR. Como recién estoy aprendiendo Playwright para Python , pensé que lo intentaría.
El siguiente código usa playwright
para abrir un sitio web decodificador de código QR en línea, haga clic en la página para configurar las opciones correctas, cargue el archivo de imagen y luego lea el resultado de la página.
Soy consciente de que esta es una forma completamente complicada y nadie haría esto en el código de producción, pero fue divertido y funciona :) Aunque no califica como "simple" como solicitó el OP, me temo.
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()
huellas dactilares
1
Algunas notas:
headless=False
.**
, por lo que si codificaste One Two Three
recuperarás **e Two Three
. Esta es una limitación si no crea los códigos de barras usted mismo. Si lo hace, simplemente agregue **
al comienzo de su contenido en primer lugar.requests
. El sitio que elegí arriba aparentemente también ofrece algo así y parece haber un plan gratuito. Pero nunca lo usé, así que no puedo decir nada al respecto.PyBoof acaba de actualizarse y ahora admite escanear/leer códigos Micro QR y generarlos también. Vea el código de ejemplo en Github para detectar y crear . A continuación se muestra una copia del código para escanear/detectar:
import numpy as np import pyboof as pb # Detects all the QR Codes in the image and prints their message and location data_path = "../data/example/fiducial/microqr/image01.jpg" detector = pb.FactoryFiducial(np.uint8).microqr() image = pb.load_single_band(data_path, np.uint8) detector.detect(image) print("Detected a total of {} QR Codes".format(len(detector.detections))) for qr in detector.detections: print("Message: " + qr.message) print(" at: " + str(qr.bounds))
PyBoof es un envoltorio alrededor de BoofCV , por lo que es posible que desee comprobarlo también.