1 พฤษภาคม 2558

Published พฤษภาคม 01, 2558 by with 0 comment

อ่าน Barcode และ QR Code ด้วย Python

สวัสดีผู้อ่านทุกท่านครับ บทความนี้จะพาผู้อ่านไปเขียนโปรแกรมอ่าน Barcode และ QR Code ด้วย Python กันครับ


หลังจากสองบทความที่แล้ว :
สร้าง QR code บน Python
สร้างบาร์โค๊ด Barcode ด้วย Python

คราวนี้เราจะไปเขียนโปรแกรมภาษา Python ให้อ่าน Barcode และ QR Code ได้ครับ

การอ่าน Barcode และ QR Code ด้วย Python ผมได้ค้นข้อมูลในอินเทอร์เน็ตพบไลบรารีตัวหนึ่งของภาษาซีที่สามารถอ่าน Barcode และ QR Code ได้ นั้นคือ ไลบรารี ZBar ไลบรารีนี้ใช้ License: LGPL

สำหรับ Windows
ให้โหลดไฟล์ ZBar Windows Installer จาก http://zbar.sourceforge.net/download.html มาติดตั้งแล้ว เพิ่ม PATH ของ zbar เช่น ผมติดตั้ง zbar ไว้ใน C:\Program Files (x86)\ZBar\ ผมจึงเพิ่ม C:\Program Files (x86)\ZBar\ZBar\bin เข้าไปแล้วกด ตกลง ครับ
สำหรับ Mac OS X

ใช้คำสั่ง
brew install zbar

สำหรับ Linux สาย Debian/Ubuntu

ใช้คำสั่ง
$ sudo apt-get install libzbar0 libzbar-dev

อ่าน Barcode และ QR Code สำหรับ Python 2


ใช้ไลบรารี python-zbar ในการทำงานร่วมกับ ZBar ครับ ไลบรารีนี้ใช้ License: LGPL
สำหรับ Linux สาย Debian/Ubuntu ใช้คำสั่ง
sudo apt-get install python-zbar

สำหรับ Mac OS X ใช้คำสั่ง
pip install zbar

สำหรับ Windows
โหลดไฟล์บีบอัดโค้ด .zip จาก https://pypi.python.org/pypi/zbar/ แตกไฟล์แล้วเปิดไฟล์ setup.py ขึ้นมาแล้วแก้ไขไฟล์ตามนี้ครับ
1) เพิ่ม from distutils.sysconfig import get_config_vars เข้าไปยังบรรทัดที่ 3 ของไฟล์
2)เพิ่มบรรทัดต่อไปนี้เข้าไปยัง Extension call :
    library_dirs=["""zbarlibdirectory"""],
    include_dirs=[get_config_vars('INCLUDEDIR'),
                  get_config_vars('INCLUDEPY'),
                  """zbarincludedirectory"""]
ถ้าผู้อ่านติดตั้ง ZBar ไว้ใน d:\zbar\ จะเป็น
            library_dirs=["""d:\zbar\lib"""],
            include_dirs=[get_config_vars('INCLUDEDIR'),
                          get_config_vars('INCLUDEPY'),
                          """d:\zbar\include"""]

บันทึกไฟล์แล้วใช้คำสั่ง (โปรดตรวจสอบการตั้งค่า C compiler กับ Python ให้เรียบร้อยครับ)
python setup.py install

การใช้งานไลบรารี zbar กับ Python 2


from PIL import Image
import zbar
scanner = zbar.ImageScanner()

pil = Image.open('zbartest2.png').convert('L') #เปิดไฟล์ zbartest2.png เพื่ออ่านข้อมูล
width, height = pil.size
raw = pil.tostring()

image = zbar.Image(width, height, 'Y800', raw) # อ่าน Barcode และ QR Code
scanner.scan(image) #ค้นหารูปภาพของ Barcode และ QR Code
for symbol in image:
 print 'decoded', symbol.type, 'symbol', '"%s"' % symbol.data #แสดงข้อมูล


อ่าน Barcode และ QR Code สำหรับ Python 2 , Python 3


ใน Python 3 มีผู้พัฒนาโมดูลสำหรับใช้งาน ZBar เหมือน Python 2 ขึ้นมาครับ แต่เนื่องจากไม่เสถียรพอ ผมจึงไม่แนะนำ ใช้วิธีนี้แทนครับ ใช้งานได้ทั้ง Python 2 และ Python 3 ครับ

subprocess.check_output(["zbarimg","-q","ไฟล์ Barcode หรือ QR Code.PNG"])

ตัวอย่างเช่น


>>> import subprocess
>>> subprocess.check_output(["zbarimg","-q","ean13_barcode.png"])
b'EAN-13:5901234123457\r\n'
>>> a = subprocess.check_output(["zbarimg","-q","ean13_barcode.png"])
>>> a.decode('utf-8')
'EAN-13:5901234123457\r\n'


ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

0 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)