Python OCR识别图片

article/2025/11/5 10:54:13

OCR技术是光学字符识别的缩写(Optical Character Recognition),是通过扫描等光学输入方式将各种票据、报刊、书籍、文稿及其它印刷品的文字转化为图像信息,再利用文字识别技术将图像信息转化为可以使用的计算机输入技术。可应用于银行票据、大量文字资料、档案卷宗、文案的录入和处理领域。(以上信息来源于百度百科OCR技术)
前几天刚好接到公司两个相关需求需求,一个是资产管理,由于信息化管理的需求,需要识别我们的物料标签;另一个是我们的会员系统,通过图片给的识别码到系统中查找是否存在相应红包、会员信息,从而避免黄牛扰乱我们的红包、会员系统,以前的做法是购买一个外部公司开发的接口(据说是1000元10万次)。基于公司的业务需求,同时也为了实践用技术解决业务上的问题的态度,把实际开发中遇到的问题记录下来,供读者们少走弯路。

一、环境准备
首先我们的操作环境是Windows操作系统(Linux系统可以通过libtesseract方式访问),我们采用的OCR识别软件是Tesseract-OCR,下载并安装Tesseract-OCR软件,安装完成之后需要配置环境变量,配置完成之后通过CMD命令行验证是否配置成功,执行tesseract -v命令查看相应版本,下面是一个CMD控制台下的识别实例。

OCR下载地址:https://digi.bib.uni-mannheim.de/tesseract/

OCR中文下载地址:https://download.csdn.net/download/qq_30273575/81897469

OCR全部语言下载地址:https://download.csdn.net/download/qq_30273575/81898150

如果用代码实现,环境变量一定要配置成C:\Program Files\Tesseract-OCR\tessdata,而不是C:\Program Files\Tesseract-OCR


配置中文语言包
默认情况下Tesseract-OCR是不能识别中文的,需要加载相应的中文语言包,简体中文语言包叫chi_sim.traineddata下载下来之后需要放置到${TESSERACT_HOME}/tessdata目录下,同时把语言包目录路径配置到环境变量当中,新增变量名称为“TESSDATA_PREFIX”。

下图中文件夹添加了英文和中文简体两种包,

语言包下载地址

至此前期的环境准备工作已经完成,读者可以通过CMD命令行的模式使用OCR的基本功能了,接下来是通过Python语言集成进来,毕竟手工操作的效率和扩展性不如程序化实现。

使用命令行转换:tesseract YINWEN.png output -l eng 

环境变量要配置成C:\Program Files\Tesseract-OCR\才可以执行,与代码实现不同

YINWEN.png 为图片名,在当前文件夹下C:\Users\jeff.xie\Desktop>

output为文字输出的文件名,如下图所示,默认txt文件,

-l表示Language,这里设置的为 eng,表示为英文

下图所示,可以正常转换文本

中文转换出现乱码,待研究。。。 

Python实现

安装依赖包

接下来我们主要实现Python与Tesseract-OCR交互实现程序化图片识别功能。首先我们需要安装Python 图片依赖包,本文中Python涉及到的依赖包主要有两个,一个是PIL(Python Imaging Library),另外一个就是与Tesseract-OCR交互的依赖包pytesseract,通过pip install pytesseract安装相应的包。

安装tesseract orc


下载地址:https://github.com/UB-Mannheim/tesseract/wiki 
点击“tesseract-ocr-w64-setup-v4.0.0-beta.1.20180414.exe”

下载安装。注意:安装的时候选中中文包(安装时把所有选项都勾上)。本人安装目录:C:\Program Files\Tesseract-OCR\tessdata

使用命令,查看版本号和支持语言:
cd C:\Program Files\Tesseract-OCR  
 tesseract -v tesseract --list-langs -v tesseract --list-langs  #查看Tesseract-OCR支持语言

配置tesseract运行文件
 

...\Lib\site-packages\pytesseract\pytesseract.py 

找到文件:tesseract_cmd = 'tesseract'
修改为:tesseract_cmd = 'C:\\Program Files\\Tesseract-OCR\\tesseract.exe'


编写相应代码获取图片字符,首先是加载依赖包,读取图片,最终把从图片上读取出的字符写入一个文件保存起来,具体代码如下,两种方式实现:

from PIL import Image
import pytesseractimport os,sys
sys.path.append(os.getcwd())def read_text(text_path):"""传入文本(jpg、png)的绝对路径,读取文本:param text_path::return: 文本内容"""# 验证码图片转字符串im = Image.open(text_path)# 转化为8bit的黑白图片imgry = im.convert('L')# 二值化,采用阈值分割算法,threshold为分割点threshold = 140table = []for j in range(256):if j < threshold:table.append(0)else:table.append(1)out = imgry.point(table, '1')# 识别文本
    testdata_dir_config = '--tessdata-dir "C:\\Program Files\\Tesseract-OCR\\tessdata"'text = pytesseract.image_to_string(out, lang="chi_sim", config=testdata_dir_config)# text = pytesseract.image_to_string(out, lang="chi_sim")return textdef read_pic(text_path):im = Image.open(text_path)text = pytesseract.image_to_string(im, lang="eng")return textif __name__ == '__main__':print(read_text("d://a2//test.png"))print(read_pic("C:/Users/jeff.xie/Desktop/YINWEN.png"))

最后的效果如下:


问题及解决:

 读取中文字符的时候有异常输出,如下

Python程序不能对中文进行编码,执行程序前,需要配置中文的环境,如下:

 
解决pytesseract.pytesseract.TesseractError: (1, ‘Error opening data file C:\Program Files\Tesseract-OCR\tessdata/chi_sim.traineddata Please make sure the TESSDATA_PREFIX environment variable is set to your “tessdata” directory. Failed loading language ‘chi_sim’ Tesseract couldn’t load any languages! Could not initialize tesseract.’)
参考链接: https://www.pythonf.cn/read/167081

path = "img\\text-img.png"
testdata_dir_config = '--tessdata-dir "C:\\Program Files\\Tesseract-OCR\\tessdata"'
textCode = pytesseract.image_to_string(Image.open(path), config=testdata_dir_config, lang='chi_sim')

相关的学习资料:

编程:Python实现图片识别_xiaxianba的博客-CSDN博客_python图片识别

python3 图片文字识别 - shaomine - 博客园


http://chatgpt.dhexx.cn/article/m1MC9SSM.shtml

相关文章

Python图片识别——人工智能篇

目录 一、安装pytesseract和PIL PIL全称&#xff1a;Python Imaging Library&#xff0c;python图像处理库&#xff0c;这个库支持多种文件格式&#xff0c;并提供了强大的图像处理和图形处理能力。 由于PIL仅支持到Python 2.7&#xff0c;所以在PIL的基础上创建了Pillow库&…

部署kvm

实验需求&#xff1a; 1、部署kvm 2、使用WebVirtMgr的WEB界面管理 3、在该WEB界面中安装一台Linux操作系统 环境说明&#xff1a; 系统&#xff1a;CentOS7 IP&#xff1a;192.168.253.145 1. CPU虚拟化功能 部署前请确保你的CPU虚拟化功能已开启&#xff0c;分为两种情况…

KVM是什么 机柜 机架服务器 怎么用

多个刀片服务器连接到KVM&#xff0c;使用KVM对它们进行统一管理 每个服务器在KVM上有一个序号&#xff0c;切换序号&#xff0c;桌面就会进入到对应的服务器 是看PORT ID 上面的ON LINE哪些灯亮&#xff0c;则代表连上了哪几个服务器

linux服务器部署kvm

1.查看系统版本 [rootlocalhost ~]# cat /etc/centos-release CentOS Linux release 7.5.1708 (Core)2.检查是否开启虚拟化。有VMX或者svm [rootlocalhost ~]# cat /proc/cpuinfo | egrep vmx|svm如果没有数据显示的话&#xff0c;关闭虚拟机&#xff0c;点击虚拟机设置。 3…

KVM服务器安装详解及其应用(Services02 DAY01)

安装一台KVM服务器  问题 本例要求安装一台可用的KVM服务器&#xff1a; 准备一台CentOS6服务器安装虚拟化相关包组启动libvirtd服务  方案 在CentOS6系统中&#xff0c;KVM虚拟化相关的软件组包括四个&#xff1a;虚拟化、虚拟化客户端、虚拟化工具、虚拟化平台&#xff…

服务器的虚拟kvm是什么,服务器 配置虚拟kvm功能

服务器 配置虚拟kvm功能 内容精选 换一换 Linux操作系统XEN实例变更为KVM实例前&#xff0c;必须完成驱动的安装和配置。本节操作指导您手动安装Linux云服务器驱动、配置磁盘自动挂载等&#xff0c;并将XEN实例变更为KVM实例。如需使用自动化脚本安装驱动的方法请参考XEN实例变…

kvm云服务器虚拟化,kvm虚拟化 云服务器

kvm虚拟化 云服务器 内容精选 换一换 用户在华东区创建了一个保护组及其保护实例&#xff0c;如表1所示。删除该保护实例&#xff0c;但不删除容灾站点服务器。然后在弹性云服务器页面&#xff0c;卸载容灾站点服务器的云硬盘&#xff0c;并将该云硬盘挂载给可用区AZ1中的其他云…

搭建KVM服务器(1)

安装虚拟化服务器平台 虚拟化概念 • KVM /QEMU /LIBVIRTD – KVM是linux内核的模块,它需要CPU的支持,采用硬件辅劣虚拟化技术 Intel-VT,AMD-V,内存的相关如Intel的 EPT 和 AMD 的 RVI 技术。 – QEMU 是一个虚拟化的仿真工具,通过 ioctl 不内核kvm 交互完成对硬件的虚拟化支…

稳定kvm服务器vps,kvm的服务器vps

kvm的服务器vps 内容精选 换一换 oVirt Engine是运行在基于JBoss的Java应用程序。该服务与主机上的VDSM进行通信&#xff0c;以部署、启动、停止、迁移和监控VM&#xff0c;并且还可以通过模板在存储上创建新的镜像。oVirt Engine以可扩展性、安全性、高性能为基础的架构技术&a…

维护华为服务器的好工具KVM

以前维护服务器&#xff0c;要么打开远程桌面&#xff0c;要么打开telnet&#xff0c;或者使用其他的远程工具&#xff0c;今天维护一台新购买的华为服务器&#xff0c;使用了华为官网下载的KVM&#xff0c;真好用&#xff01; 使用网线&#xff0c;找到Mgmt的网口插入&#xf…

服务器系统kvm安装,云服务器安装kvm

云服务器安装kvm 内容精选 换一换 安装完操作系统后的临时云服务器需要进行相关配置&#xff0c;并安装原生的XEN和KVM驱动&#xff0c;才能保证后续创建的云服务器正常使用。该任务指导用户完成Linux云服务器的相关配置与驱动安装&#xff0c;从而创建为Linux系统盘镜像。配置…

vnc远程管理kvm,在办公室连接kvm服务器

文章目录 vnc远程管理kvm vnc远程管理kvm vnc概念图 首先试试服务器装了VNC没 rpm -q tigervnc tigervnc-server没安装的话会直接出现 package tigervnc is not installed package tigervnc-server is not installed第一步&#xff0c;安装VNC packages&#xff1a; yum …

安装一台KVM服务器

1.安装一台KVM服务器 问题 本例要求安装一台可用的KVM服务器&#xff1a; 1)准备一台CentOS6服务器 2)安装虚拟化相关包组 3)启动libvirtd服务 方案 在CentOS6系统中&#xff0c;KVM虚拟化相关的软件组包括四个&#xff1a;虚拟化、虚拟化客户端、虚拟化工具、虚拟化平台&a…

kvm服务器创建虚拟机

virsh创建kvm虚拟机 详细讲解在Linux服务器上通过virsh工具创建kvm虚拟机&#xff0c;以及一些kvm虚拟机常用命令&#xff0c;如&#xff1a;创建、启动、删除、销毁等。 注意事项&#xff1a;在进行kvm虚拟机创建前需要确认Linux内核已经开启kvm功能。另一方面&#xff0c;vi…

Linux 安装KVM服务器

1.安装一台KVM服务器 问题 本例要求安装一台可用的KVM服务器&#xff1a; 1)准备一台CentOS6服务器 2)安装虚拟化相关包组 3)启动libvirtd服务 方案 在CentOS6系统中&#xff0c;KVM虚拟化相关的软件组包括四个&#xff1a;虚拟化、虚拟化客户端、虚拟化工具、虚拟化平台&a…

KVM如何装服务器系统,手把手教你配置KVM服务器

1 Ubuntu系统安装 1.1 制作启动盘 准备一个U盘,将其清空后,去官网下载Ubuntu18.04系统的iso镜像文件,并将其拷进U盘。然后下载一个UltralOS软碟通工具,完成安装后打开软碟通,文件->打开,打开我们的iso镜像,选择U盘点击启动->写入硬盘映像,最后写入就完成U盘启动盘…

Centos7安装kvm服务器

Centos7安装kvm服务器 什么是kvmvirt-manager及相关软件简介KVMQEMULibvirt KVM常用配置文件查看libvirtd配置文件查看libvirtd 守护进程的环境变量和参数 查看QEMU虚拟机监控程序配置 0.检查硬件是否支持kvm虚拟化检查CPU是否支持KVM虚拟化启动kvm虚拟化内核模块 1.启用嵌套虚…

稳定的kvm服务器,kvm服务器

kvm服务器 内容精选 换一换 可以。平台近期对磁盘功能进行了升级&#xff0c;对于系统升级后创建的弹性云服务器&#xff0c;系统最多支持挂载60块磁盘。具体如下&#xff1a;创建弹性云服务器时&#xff0c;您可以为弹性云服务器添加24块磁盘。弹性云服务器创建成功后&#xf…

KVM服务器安装

KVM服务器安装 问题 本例要求安装一台可用的KVM服务器&#xff1a; 1)准备一台CentOS6服务器 2)安装虚拟化相关包组 3)启动libvirtd服务 方案 在CentOS6系统中&#xff0c;KVM虚拟化相关的软件组包括四个&#xff1a;虚拟化、虚拟化客户端、虚拟化工具、虚拟化平台&#xf…

KVM架构VPS服务器有哪些优势?

KVM技术是一种允许用户在一台物理机器上运行多个操作系统的系统。使用这种类型的服务器的主要优势是通过在VPS服务器之间分配资源来实现成本效率和性能优势&#xff0c;还可以达到远程软件同时访问的目的。如果用户想要保证客户的数据安全&#xff0c;同时享受更高的正常运行时…