Python调用Tesseract-OCR和Zxing完成图片OCR识别和二维码解码

本文介绍如何使用Python结合Tesseract-OCR进行图片文字识别及利用ZXing库实现二维码解码的过程。具体步骤包括安装必要的软件环境如Tesseract-OCR、JDK及相应的库文件,并通过示例代码展示识别流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[硬件环境]

Win10 64位

[软件环境]

Python版本:2.7.3

Python库:

1.1) Pillow

1.2) Pytesseract

2.1) Jpype

其他:

1.1) Tesseract-OCR的可执行文件

2.1) JDK 1.6

2.2) ZXing Jar包:javase-2.2.jar和core-2.2.jar

[搭建过程]

Tesseract-OCR:

1. 安装Tesseract-OCR的可执行文件

2. 安装Pillow库

3. 安装Pytesseract库

ZXing:

1. 安装JDK 1.6

2. 下载ZXing Jar包:javase-2.2.jar和core-2.2.jar供使用

3. 安装Jpype库以供Python调用Jar包

[相关代码]

# 1.1.Install tesseract-ocr*.exe from http://jaist.dl.sourceforge.net/project/tesseract-ocr-alt/tesseract-ocr-setup-3.02.02.exe
# 1.2.Install pillow as "pip install form *.whl" in the zip file directory in powershell
# 1.3.Install pytesseract as "pip install form *.whl" in the zip file directory in powershell
# 2.1.Install jpype as "python setup.py install" in the zip file directory in powershell
import os.path
import pytesseract
from PIL import Image
from jpype import *

##################################################### Tesserace-ocr ####################################################
image = Image.open(r"D:\Project\FirstPython\OCR2.png")
code = pytesseract.image_to_string(image)
code = code.replace(' ', '');
code = code.replace('-', '');
code = code.replace('\r', '');
code = code.replace('\n', '');
print(code)

##################################################### Zxing Decode #####################################################
# Start jvm
jarpath = os.path.join(os.path.abspath('.'), 'D:/Project/FirstPython/')
startJVM("C:/Program Files/Java/jre6/bin/server/jvm.dll", "-ea", ("-Djava.class.path=%s" % (jarpath + "javase-2.2.jar" + ";" + jarpath + "core-2.2.jar")))
# Load the useful library classes
File = JClass("java.io.File")
BufferedImage = JClass("java.awt.image.BufferedImage")
ImageIO = JClass("javax.imageio.ImageIO")
BinaryBitmap = JClass("com.google.zxing.BinaryBitmap")
DecodeHintType = JClass("com.google.zxing.DecodeHintType")
LuminanceSource = JClass("com.google.zxing.LuminanceSource")
BufferedImageLuminanceSource = JClass("com.google.zxing.client.j2se.BufferedImageLuminanceSource")
MultiFormatReader = JClass("com.google.zxing.MultiFormatReader")
NotFoundException = JClass("com.google.zxing.NotFoundException")
Result = JClass("com.google.zxing.Result")
HybridBinarizer = JClass("com.google.zxing.common.HybridBinarizer")
Hashtable = JClass("java.util.Hashtable")
# Do the qrcode decode
image = ImageIO.read(File("D:/Project/FirstPython/Qrcode1.jpg"))
source = BufferedImageLuminanceSource(image)
bitmap = BinaryBitmap(HybridBinarizer(source))
hints = Hashtable()
hints.put(DecodeHintType.CHARACTER_SET, "GBK")
result = MultiFormatReader().decode(bitmap, hints)
print(result)
# Shutdown JVM
shutdownJVM()

 

posted on 2017-02-14 16:45 jayhust 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/jayhust/p/6398318.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值