[TH] สร้างและอ่าน QR Code

บทความนี้เป็นแล็บหนึ่งในการเรียนการสอนวิชาปัญญาประดิษฐ์เพื่อประยุกต์ใช้การสร้าง QR Code จากไลบรารี segno การถอดรหัส QR Code จากไลบนรารี OpenCV การตรวจสอบข้อความว่าเป็น URL หรือไม่ และการเปิดเว็บบราวเซอร์เพื่อเข้าถึง URL ที่ถอดรหัสได้ด้วยไลบรารี webbrowser

ไลบรารี segno · PyPI เป็นไลบรารีที่พัฒนาเพื่อใช้กับภาษาไพธอนโดยทำงานตามมาตรฐาน ISO/IEC 18004:2015(E) อันเป็นเรื่องของ “QR Code bar code symbology specification” 

การติดตั้งจะต้องสั่งงานดังนี้

การใช้งานมีรูปแบบการใช้งานพื้นฐานประกอบด้วย 3 สิ่ง คือ การเรียกใช้ไลบรารี การสร้างข้อมูล QR Code ด้วยคำสั่ง make_qr() และบันทึกข้อมูล QR Code ลงไฟล์ด้วยคำสั่ง save() ดังนี้

โมดูล webbrowser เป็นไลบรารีที่อยู่ภายใต้ภาษาไพธอนที่ดูแลโค้ดโดย Georg Brandl และเมธอดหรือคำสั่งสำหรับใช้งานประกอบด้วย

open( URL, new=0, autoraise=True )
open_new( URL )
open_new_tab( URL )

โดยทั้ง 3 เมธอดรับ URL เพื่อเปิดหน้าเว็บที่ระบุ แต่แตกต่างที่ open() ประกอบด้วย 3 พารามิเตอร์ คือ URL, new เป็น 0 หมายถึงเป็นการเกิดจากบราวเซอร์ที่เปิดไว้แล้ว (แต่ถ้ายังไม่เปิดบราวเซอร์จะเปิดหน้าบราวเซอร์ขึ้นมาใหม่) แต่ถ้ากำหนดเป็น 1 จะเป็นการระบุให้เปิดหน้าเว็บบราวเซอร์ใหม่ ส่วน autoraise เป็น True หมายถึงให้ทำการหน้าเว็บนั้นแสดงเป็นหน้าต่างบนสุด

ทำตั่ง open_new() เป็นการเปิดหน้าบราวเซอร์ใหม่แม้มีบราวเซอร์เปิดอยู่แล้ว และ open_new_tab() เป็นการเปิดหน้าเว็บในแท็บใหม่บนบราวเซอร์ที่เปิดไว้แล้ว

ตัวอย่างแรกเป็นการใช้ไลบรารี segno เพื่อสร้าง QR Code จำนวน 2 ไฟล์ โดยไฟล์แรกเป็นข้อความ “I’m JarutEx” และไฟล์ที่ 2 เป็น URL ของเว็บ “https://www.jarutex.com” ด้วยการใช้คำสั่ง make_qr() หลังจากนั้นทำการบันทึกลงไฟล์ภาพด้วยคำสั่ง save() ดังนี้

ตัวอย่างผลลัพธ์ที่ได้จากการสร้า QR Code ชื่อ my_id.png และ my_assignment1.png

เพื่อถอดรหัส และตรวจสอบข้อมูลที่อ่านได้ว่าเป็นข้อความหรือ URL โดยแสดงข้อความที่อ่านได้ และถ้าพบว่าเป็น URL จะเปิดเว็บบราวเซอร์เพื่อเปิดเข้าหน้าเว็บที่ระบุมาจาก QR Code

การอ่านไฟล์ภาพใช้คำสั่ง imread() จากไลบรารี OpenCV ดังนี้

เมื่อได้ข้อมูลภาพเก็บในตัวแปร img และ img2 ขั้นตอนต่อไปเป็นการถอดรหัส QR Code ด้วยการใช้คำสั่ง detectAndDecode() ของไลบรารีย่อยของ OpenCV ชื่อ QRCodeDetector() ดังนี้

ส่วนของการตรวจสอบ URL

โปรแกรมการทำงาน

ตัวอย่างผลลัพธ์ของการทำงานเป็นดังนี้

จากตัวอย่างในครั้งนี้จะพบว่าการสร้าง QR Code สามารถกระทำได้สะดวกจากการใช้ภาษาไพธอนผ่านทางไลบรารี segno ที่สามารถกำหนดขนาดของภาพและกรอบได้ นอกจากนี้ยังมีตัวอย่าง FindURL() ที่เขียนด้วยการตรวจหาคำ http: และ https: ในสตริงที่ถอดรหัสจาก OpenCV ถ้าไม่พบจะคืนค่าเป็นค่าว่าง เมื่อนำมาตรวจสอบจะทำให้สามารถแยกได้ว่า QR Code นั้นเป้นข้อความธรรมดาหรือ URL และถ้าเป็น URL จะเปิดหน้าเว็บด้วยไลบรารี webbrowser.open()

นอกจากนี้จะพบว่า สามารถนำไปประยุกต์เข้ากับการใช้ Text-to-Speech และ Speech-To-Text เพื่อเพิ่มความสะดวกในการใช้งาน หรือเพิ่มข้นตอนการยืนยันการเปิดหน้าเว็บเพื่ป้องกันกรณีของความไม่ปลอดภัยในการเข้าเว็บ เป็นต้น

สุดท้ายนี้ขอให้สนุกกับการเขียนโปรแกรมครับผม

  1. segno · PyPI
  2. webbrowser
  3. webbrowser.py