2014-12-01 2 views
44

TL : DR : (선호하는 순수한) Python을 사용하여 이미지 파일에서 QR 코드를 디코딩하는 방법이 필요합니다.파이썬에서 QR 코드 이미지를 디코딩하는 방법은 무엇입니까?

파이썬을 사용하여 디코드하려는 QR 코드가있는 jpg 파일이 있습니다. 나는 이렇게 주장하는 몇 가지 라이브러리를 발견했습니다

PyQRCode 가정 단순히이 같은 경로를 제공하여 이미지에서 QR 코드를 디코딩 할 수 있습니다 (website here) :

import sys, qrcode 
d = qrcode.Decoder() 
if d.decode('out.png'): 
    print 'result: ' + d.result 
else: 
    print 'error: ' + d.error 

는 그래서 단순히 설치 그것은 sudo pip install pyqrcode을 사용합니다. 나는 그러나 위의 예제 코드에 대한 이상한 찾을 것은, 내가 qrcode이 가지 저를 혼동 QR 코드 이미지를 생성 할 수 있습니다 this library을 의미 생각하기 때문에 그것은 단지 (하지만하지 pyqrcode) qrcode를 수입한다는 것입니다. 그래서 위의 코드를 pyqrcodeqrcode으로 시도했지만 두 번째 줄에서 모두 AttributeError: 'module' object has no attribute 'Decoder'이라고 말하면서 실패합니다. 게다가, the website은 우분투 8.10 (6 년 전부터 나왔다)을 가리키며 최신 커밋을 확인하기위한 공개 (자식 또는 기타) 저장소를 찾을 수 없습니다. 그래서 나는 다음 라이브러리로 이동 :

ZBar (website here는) "an open source software suite for reading bar codes from various sources, such as image files." 그래서 나는 맥 OSX가 sudo pip install zbar을 실행에 설치 시도 주장한다. error: command 'cc' failed with exit status 1으로 실패합니다. this SO question에 대한 답변에서 제안을 시도했지만 해결할 수없는 것 같습니다.

QRToolsthis blogpost에 따른 다음 코드를 사용하여 이미지를 쉽게 해독 할 수있는 : 찾을 수없는, 그래서 sudo pip install qrtools를 사용하여 설치를 시도

from qrtools import QR 
myCode = QR(filename=u"/home/psutton/Documents/Python/qrcodes/qrcode.png") 
if myCode.decode(): 
    print myCode.data 
    print myCode.data_type 
    print myCode.data_to_string() 

를 그래서 나는 다시 이동하기로 결정 아무것도. 나는 또한 python-qrtools, qr-tools, python-qrtools 및 몇 가지 조합으로 시도했지만, 불행히도 아무 소용이 없습니다. ZBar (위 참조)를 기반으로한다고 말하는 this repo을 말합니다. 내가 Heroku가 내 코드를 실행하려면 비록 성공적으로 (sudo apt-get install python-qrtools로) 리눅스 박스에 설치하고 실행 시도 (따라서 순수 파이썬 솔루션을 선호) :

from qrtools import QR 
c = QR(filename='/home/kramer65/qrcode.jpg') 
c.data # prints u'NULL' 
c.data_type # prints u'text' 
c.data_to_string() # prints '\xef\xbb\xbfNULL' where I expect an int (being `1234567890`) 

이, 그것은 그것을 디코딩하는 것 같지만 올바르게하지 않는 것 같습니다. 또한 ZBar가 필요하므로 순수한 Python이 아닙니다. 그래서 나는 또 다른 도서관을 찾기로 결심했다.

PyXing (website here)는 가정으로 인기있는 자바 ZXing library의 파이썬 포트이지만, 초기에만 커밋 6 세이며 프로젝트가 어떠한 추가 정보 나 문서가 없습니다. 나머지 부분

나는 엔 코더 (안 드 코더) 당신을 위해 디코딩 할 수있는 몇 가지 API 엔드 포인트 qr- 몇 가지를 발견했다. 이 서비스가 다른 API 엔드 포인트에 의존하는 것을 좋아하지 않으므로 디코딩을 로컬로 유지하고 싶습니다.

결론은 다음과 같습니다. 아무도 내가 (선호하는 순수한) 파이썬의 이미지에서 QR 코드를 어떻게 해독 할 수 있는지 알고 싶습니까? 모든 팁을 환영합니다!

+0

그것은해야한다 : '만약 myCode.decode ("/ 홈/kramer65 QR (파일 이름 = '/ home/kramer65/qrcode.jpg') ' –

+0

** @ kramer65 **에 의해 제기 된 후속 질문을 언급 할 가치가 있다고 생각합니다. zbar'와'pip' : http://stackoverflow.com/questions/27406641/how-to-install-python-bindings-originating-from-an-a pt-package – Nez

답변

64

당신은 qrtools을 사용하여 다음 단계 및 코드를 시도 할 수 있습니다 : 이미 pip install pyqrcode를 사용하여 설치할 수 있습니다

  • 내가이 일을 위해 pyqrcode 사용을, 존재하지 않는 경우

    • 가하는 qrcode 파일을 만듭니다

    • 다음 코드를 사용하십시오.

      (210)
      >>> import pyqrcode 
      >>> qr = pyqrcode.create("HORN O.K. PLEASE.") 
      >>> qr.png("horn.png", scale=6) 
      
  • 디코드 qrtools

    • 를 사용하여 기존 qrcode 파일은 이제 파이썬 프롬프트에서 다음 코드를 사용
    • sudo apt-get install python-qrtools를 사용하여 qrtools를 설치

      >>> import qrtools 
      >>> qr = qrtools.QR() 
      >>> qr.decode("horn.png") 
      >>> print qr.data 
      u'HORN O.K. PLEASE.' 
      
  • In [2]: import pyqrcode 
    In [3]: qr = pyqrcode.create("HORN O.K. PLEASE.") 
    In [4]: qr.png("horn.png", scale=6) 
    In [5]: import qrtools 
    In [6]: qr = qrtools.QR() 
    In [7]: qr.decode("horn.png") 
    Out[7]: True 
    In [8]: print qr.data 
    HORN O.K. PLEASE. 
    

    주의 사항 당신이 경우 pyqrcode

  • 을 사용하는 PyPNGpip install pypng를 사용하여 설치해야 할 수도 있습니다

    • : 여기

    단일 실행의 전체 코드입니다 당신은 PIL을 설치했습니다. IOError: decoder zip not available을 얻으십시오. 이 경우, try uninstalling and reinstalling PIL 사용 : 문제가 해결되지 않으면

    pip uninstall PIL 
    pip install PIL 
    
  • Pillow를 사용해보십시오 대신

    pip uninstall PIL 
    pip install pillow 
    
+1

안녕 무 없음, 답변 해 주셔서 감사합니다. qrtools는 zbar를 필요로하지만 순수한 파이썬이 아니기 때문에 실제로 작동합니다. 주요 문제는 heroku에 zbar python 바인딩을 설치해야한다는 것입니다. 여기에 대한 질문은 여기에 있습니다. http://stackoverflow.com/questions/27406641/how-to-install-python-bindings-originating-from -an-apt-package. 나는 당신의 대답을 받아 들일 것이지만, 당신이 다른 질문을 한 번 보아서 heroku에서 qrtools를 실행하는 것을 해결할 수 있다면 크게 감사 할 것입니다. 대단히 감사합니다! – kramer65

+0

@ kramer65 불행히도 heroku에 대한 많은 경험이 없으므로 패키지가 어떻게 설치되어 있는지 잘 모르겠습니다 ... –

+3

이것은 작동하지 않습니다. Exception : tostring()이 제거되었습니다. –

관련 문제