用Python写了一个图像文字识别OCR工具
人生苦短,快学Python!
在之前的文章里,我们多次尝试用Python实现文本OCR识别!
今天我们要搞一个升级版:直接写一个 图像文字识别OCR工具 ! 引言
最近在技术交流群里聊到一个关于图像文字识别的需求,在工作、生活中常常会用到,比如 票据、漫画、扫描件、照片的文本提取 。
博主基于 PyQt + labelme + PaddleOCR 写了一个桌面端的OCR工具,用于快速实现图片中 文本区域自动检测+文本自动识别 。
识别效果如下图所示: 干货主要有:
① 200 多本 Python 电子书(和经典的书籍)应该有
② Python标准库资料(最全中文版)
③ 项目源码(四五十个有趣且可靠的练手项目及源码)
④ Python基础入门、爬虫、网络开发、大数据分析方面的视频(适合小白学习)
⑤ Python学习路线图(告别不入流的学习)
私信小编01即可获取大量Python学习资源
OCR工具识别效果
所有框选区域为OCR算法自动检测,右侧列表有每个框对应的文字内容;点击右侧"识别结果"中的文本记录,然后点击"复制到剪贴板"即可复制该文本内容。 功能列表文本区域检测+文字识别 文本区域可视化 文字内容列表 图像、文件夹加载 图像滚轮缩放查看 绘制区域、编辑区域 复制所选文本识别结果 OCR部分
图像文字检测+文字识别算法,主要借助 paddleocr 实现。
创建或者选择一个虚拟环境,安装需要用到的第三方库。 conda create -n ocr conda activate ocr 安装框架
如果你没有NVIDIA GPU,或GPU不支持CUDA,可以安装CPU版本: # CPU版本 pip install paddlepaddle==2.1.0 -i https://mirror.baidu.com/pypi/simple
如果你的GPU安装过CUDA9或CUDA10,cuDNN 7.6+,可以选择下面这个GPU版本: # GPU版本 python3 -m pip install paddlepaddle-gpu==2.1.0 -i https://mirror.baidu.com/pypi/simple 安装 PaddleOCR
安装paddleocr: pip install "paddleocr>=2.0.1" # 推荐使用2.0.1+版本
版面分析,需要安装 Layout-Parser: pip3 install -U https://paddleocr.bj.bcebos.com/whl/layoutparser-0.0.0-py3-none-any.whl 测试安装是否成功
安装完成后,测试一张图片 --image_dir ./imgs/11.jpg ,采用中英文检测+方向分类器+识别全流程: paddleocr --image_dir ./imgs/11.jpg --use_angle_cls true --use_gpu false
输出一个list:
在python中调用from paddleocr import PaddleOCR, draw_ocr # Paddleocr目前支持的多语言语种可以通过修改lang参数进行切换 # 例如`ch`, `en`, `fr`, `german`, `korean`, `japan` ocr = PaddleOCR(use_angle_cls=True, lang="ch") # need to run only once to download and load model into memory img_path = "./imgs/11.jpg" result = ocr.ocr(img_path, cls=True) for line in result: print(line)
输出结果是一个list,每个item包含了文本框,文字和识别置信度:
[[[24.0, 36.0], [304.0, 34.0], [304.0, 72.0], [24.0, 74.0]], ["纯臻营养护发素", 0.964739]] [[[24.0, 80.0], [172.0, 80.0], [172.0, 104.0], [24.0, 104.0]], ["产品信息/参数", 0.98069626]] [[[24.0, 109.0], [333.0, 109.0], [333.0, 136.0], [24.0, 136.0]], ["(45元/每公斤,100公斤起订)", 0.9676722]] ...... 界面部分
界面部分基于pyqt5实现,其中pyqt GUI程序开发入门和环境配置,详见一篇博客(具体见文末)。
主要步骤: 界面布局设计
在QtDesigner中拖拽控件,完成程序界面布局,并保存 *.ui 文件。
利用 pyuic 自动生成界面代码
在 pycharm 的项目文件结构中找到 *.ui 文件,右键——External Tools——pyuic,会在ui文件同级目录下自动生成界面 ui 的 Python 代码。
编写界面业务类
业务类 MainWindow 实现程序逻辑和算法功能,与前面第2步生成的ui实现解耦,避免每次修改ui文件会影响业务代码。ui界面上的控件可以通过 self._ui.xxxObjectName 访问。 class MainWindow(QMainWindow): FIT_WINDOW, FIT_WIDTH, MANUAL_ZOOM = 0, 1, 2 def __init__(self): super().__init__() # 调用父类构造函数,创建QWidget窗体 self._ui = Ui_MainWindow() # 创建ui对象 self._ui.setupUi(self) # 构造ui self.setWindowTitle(__appname__) # 加载默认配置 config = get_config() self._config = config # 单选按钮组 self.checkBtnGroup = QButtonGroup(self) self.checkBtnGroup.addButton(self._ui.checkBox_ocr) self.checkBtnGroup.addButton(self._ui.checkBox_det) self.checkBtnGroup.addButton(self._ui.checkBox_recog) self.checkBtnGroup.addButton(self._ui.checkBox_layoutparser) self.checkBtnGroup.setExclusive(True) 实现界面业务逻辑
对主界面上的按钮、列表、绘图控件进行 信号槽连接 。自定义的槽函数不用专门声明,如果是自定义的信号,需要在类__init__()前加上 yourSignal= pyqtSignal(args) 。
这里以按钮响应函数、列表响应函数为例。按钮点击的信号是 clicked ,listWidget列表切换选择的信号是 itemSelectionChanged 。 # 按钮响应函数 self._ui.btnOpenImg.clicked.connect(self.openFile) self._ui.btnOpenDir.clicked.connect(self.openDirDialog) self._ui.btnNext.clicked.connect(self.openNextImg) self._ui.btnPrev.clicked.connect(self.openPrevImg) self._ui.btnStartProcess.clicked.connect(self.startProcess) self._ui.btnCopyAll.clicked.connect(self.copyToClipboard) self._ui.btnSaveAll.clicked.connect(self.saveToFile) self._ui.listWidgetResults.itemSelectionChanged.connect(self.onItemResultClicked) 5. 运行看看效果
运行 python main.py 即可启动GUI程序。
打开图片 选择语言模型ch(中文) 选择文本检测+识别 点击开始,检测完的文本区域会自动画框,并在右侧识别结果——文本Tab页的列表中显示。
所有检测出文本的区域列表,在识别结果——区域Tab页:
软件代码
由于时间有限,软件细节功能还需进一步完善。代码已开源到 gitee 上,欢迎感兴趣的朋友提pull request,共同修改完善。
代码开源地址: https://gitee.com/signal926/ocr-gui-demo
呼伦贝尔宋Pro限时特惠10。78,欢迎到店赏车手握购车款犹豫不决的你是不是还在为买车而观望,当前比亚迪益丰祥泰店宋Pro限时特惠10。78颜色可选,现车充足,优惠时间10月11日10月11日,犹豫不决的朋友不妨到店亲身试驾一下
比亚迪汽车远销国内外日前,我们从比亚迪官方了解到,将有450台比亚迪唐(参数询价)EV车型在广州港集结,启程前往挪威。至此,比亚迪已累计向挪威发运超1000台唐EV。今年5月,比亚迪对外宣布,将挪威作
呼伦贝尔宋Pro限时大促,降价1。0万元本周宋Pro最新报价比亚迪益丰祥泰店即日起到10月12日限时促销,购车优惠1。0万元,如此优惠的降幅,大家可千万不要错过,店铺地址内蒙古自治区呼伦贝尔市鄂温克族自治旗巴彦托海镇南工
淘宝的描述视频怎么保存,如何把淘宝商品描述视频保存我们在浏览淘宝的时候,会发现许多商品页面都有关于商品的描述视频。相比较图片而言,这些视频很显然能够更加生动形象的体现商品的价值,但与之对应的是这些商品描述视频的制作难度也要高出不少
搜狐影视提取器,教你快速提取视频搜狐影视里面,我们该如何下载视频呢?怎么保存到我们电脑里面呢?这时候我们就需要安装这个下面这个软件,这个软件可以帮助我们下载搜狐视频里面的短视频,这个软件就是固乔视频助手,下面小编
如何批量京东采集商品主图,多个主图采集攻略浏览京东商城经常会看到设计精美的宝贝图片,通过这些图片可提高成交量,如果你也喜欢这些图片,想把图片批量下载的电脑,下载时要掌握一定的技巧,不要再傻傻的一个个保存啦。今天小编要为大家
最新群互动h5页面制作攻略!网友快说,正愁不知如何活跃微信群做社群运营,适当应用互动营销小游戏,吸粉引流必备,也能让参与者快速记住产品的品牌,在乔拓云平台的互动小游戏的模板大全里面,各种类型的小游戏,让用户在参与游戏时,不知不觉记住品牌,创
虾皮网商品评论图片获取攻略虾皮网的商品评论区中不乏大量客户对于商品的评论图片等图片信息。利用这些虾皮网商品评论图片,我们能够更好的获取这些商品的评价信息,但我们在获取这些虾皮网商品评论图片时并不是那么的方便
有没有什么办法能够给多个视频同时静音在剪辑的过程中我们经常会需要对视频添加背景音乐,但是每一段视频都会有原声,合并在一起的时候声音就会非常杂乱,很多用户都会选择手动将视频静音,但视频量多的话一个一个处理是不太实际的,
下载淘宝图片有快速办法吗,淘宝怎么下载别人的主图视频做电商最重要的是什么,肯定是销量!想要好的销量就必须要有好的营销方法和好的产品,好的产品图片,如果商品图片如果我们自己亲手去拍摄,不经花费了大量的金钱还会浪费大量的时间在上面,今天
怎么批量查询邮政快递并一键导出表格现在很多行业都会跟快递打交道,那么在快递数量多的情况下我们怎么样能够快速处理各种情况呢?今天小编给大家推荐一个硬核快递查询工具,能够有效的帮助大家,提高工作效率。1该软件叫做固乔快