图片文字识别

目录
第一章 系统描述 3
§1.1系统概述 3
§1.2系统的物理组成 4
第二章 需求分析模型 4
§2.1 E-R图 4
§2.2 数据流图 5
§2.3 状态转换图 6
第三章 软件模块结构图 6
第四章 面向对象的视图 7
§4.1 用例图 7
§4.2 活动图 8
五、关键技术及实现 9
§5.1 图像预处理 9
§5.1.1 开发工具 9
§5.1.2 流程设计 9
§5.1.3 主要模块详细设计 10
§5.1.4 效果展示 11
§5.2 文字识别 13
§5.2.1 开发工具 13
§5.2.2 Paddleocr介绍 14
§5.2.3 流程设计 14
§5.2.4 关键代码展示 15
§5.2.5 效果展示 16

第一章 系统描述

§1.1系统概述

在发电厂和变电站电能计量回路中,由于电压过大,产生的强电场会给电表带来较大影响,且难以读出,故电压互感器离装设于控制室配电盘上的电能表有较远的距离。整个回路有接线端子排、开关、熔断器及导线,必然存在着接触电阻、导线电阻及分布参数,从而就存在着一定的回路阻抗,造成电压互感器与电能表间的二次回路上有电压降。该系统针对的测试对象是用电压互感器二次回路导线所引起的电压降。试验目的是检验用于电能计量中电压互感器二次回路压降的误差。而电能计量综合误差的计算与修正,需要准确地检测出电压互感器二次回路压降的误差。
采用计算机进行数据读取和处理过程可有效保护工作人员生命安全,并减小读取误差。

§1.2系统的物理组成

检测仪器——二次压降检测仪器
被检测仪器——被检测的互感器
自动获取数据的相机
进行数据处理的电脑
电源充电器、RS232通讯线、USB通讯线、电压测试线等

第二章 需求分析模型

§2.1 E-R图

E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。
本系统的E-R图如下所示。
在这里插入图片描述

§2.2 数据流图

下图为整个系统的数据流图,包含了系统数据的流动方向。
在这里插入图片描述

§2.3 状态转换图

本系统状态变化如下。

在这里插入图片描述

第三章 软件模块结构图

本系统主要分为数据采集,结果分析和参数修改三大模块,具体模块图如下所示。
在这里插入图片描述

第四章面向对象的视图

§4.1 用例图

在这里插入图片描述

§4.2 活动图

在确定系统用例后,对系统活动顺序进行建模如下。

在这里插入图片描述

五、关键技术及实现

§5.1 图像预处理

在本系统的拍摄图像过程中,难免会出现类似于图像角度偏转,周边存在误差等环境因素影响图片文字识别效果,故在此预处理过程中,对图像中感兴趣区域(即检测仪器屏幕区域)提取,并进行旋转和透视变化,使之呈现为矩形大小。同时,为了减少屏幕亮度影响,增强图片中文字与背景对比度,在本模块对图片进行二值化。

§5.1.1 开发工具

本部分采用python3.6和opencv进行开发。

§5.1.2 流程设计

本模块的具体实现流程如下图所示:
在这里插入图片描述

§5.1.3 主要模块详细设计

1、图像边缘检测
在该部分的具体过程如下伪代码所示。

#进行高斯模糊,减少噪声
binary = GaussianBlur(image, (3, 3), 2, 2)
#对图片进行边缘检测
binary =Canny(binary, 60, 240, apertureSize=3)
#进行膨胀操作,尽量使边缘闭合
binary = dilate(binary, kernel, iterations=1)

2、寻找最大边缘
在该部分的具体过程如下伪代码所示。

Counters=findContours(Image)
max_area=0
max_contour = []for contour in contours:currentArea = cv2.contourArea(contour)if currentArea > max_area:max_area = currentAreamax_contour = contour

3、透视变化
在该部分的具体过程如下伪代码所示。

w, h = pointDistance(box[0], box[1]), \pointDistance(box[1], box[2])dst_rect = np.array([[0, 0],[w - 1, 0],[w - 1, h - 1],[0, h - 1]], dtype='float32')M = cv2.getPerspectiveTransform(box, dst_rect)warped = cv2.warpPerspective(image, M, (w, h))

§5.1.4 效果展示

首先我们给出用例图片,如下图所示,很明显我们可以看到,该图片中屏幕部分存在一定倾斜,且中间存在亮点,并且四周存在许多干扰元素。
在这里插入图片描述

接着,我们展示对其进行边缘提取后的图片,如下图所示,我们可以发现在提取过程中,将文字等的边缘一并进行提取,所以需要通过提取最大边缘来解决该问题。
在这里插入图片描述

然后,显示我们完成透视映射后的图片,如下图所示,可以发现整个屏幕已经基本上被纠正成一个矩阵,但是,图片中间依然存在一个亮斑,为了去除亮斑,我们将该图片进行二值化。
在这里插入图片描述

二值化后的图片如下,至此,整个图片预处理的过程结束。可以发现该图片中文字与背景对比已经非常明显,且不存在其他环境因素影响识别。

在这里插入图片描述

§5.2 文字识别

在本系统中,主控电脑需要对拍摄到的图片中参数信息进行处理,然而,计算机无法单纯的对图片中的信息进行处理。而将RGB图片中的文字进行识别并输出为文本格式的过程,就是文本识别需要完成的任务。

§5.2.1 开发工具

选择使用python3.6,Paddleocr进行文字识别任务。

§5.2.2 Paddleocr介绍

PaddleOCR是一款专门进行图像中文字检测和识别的工具,目前支持目前支持中英文、英文、法语、德语、韩语、日语,可以通过修改lang参数进行切换,参数依次为ch, en, french, german, korean, japan
该工具攘括文本检测、识别、端到端识别三种方向,每个方向包含多种算法,可以达到甚至超越SOTA效果的算法性能。
§5.2.3 流程设计
该部分的流程设计如下
在这里插入图片描述

§5.2.4 关键代码展示

1、调用PaddleOCR

def detect_words(img,ocr):gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)binary = cv2.adaptiveThreshold(~gray, 200, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 35, -5)size=binary.shapeone=np.ones((size[0],size[1]),dtype=np.uint8)*255binary=one - binarycv2.imshow('binary',binary)cv2.waitKey()result = ocr.ocr(binary, cls=True)

显示结果

   boxes = [line[0] for line in result]txts = [line[1][0] for line in result]scores = [line[1][1] for line in result]im_show = draw_ocr(img, boxes, txts,scores, font_path='/path/to/PaddleOCR/doc/simfang.ttf')im_show = Image.fromarray(im_show)return boxes,txts,scores,im_show

2、输出至excel文档

def outexcel(boxes,txts,filename):fp = [box[0][0] for box in boxes]with open('test.csv', "w", newline='') as csv_file:writer = csv.writer(csv_file, dialect='excel')row = []j = 0for i in range(len(txts)):if i == 0:row.append(txts[i])continueif (boxes[i][0][1] - boxes[i - 1][0][1] > 10):row = sort(fp, j, i, row)writer.writerows([row])print(row)row.clear()j = irow.append(txts[i])row = sort(fp, j, len(txts), row)print(row)writer.writerows([row])

§5.2.5 效果展示

该算法对图片进行分块识别,效果如下。
在这里插入图片描述

识别结果如下,左边为识别出的文字,右边为准确率。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

最后输出的excel表格如下所示,可以发现基本位置正确。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/42134.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

tesseract-ocr .NET 识别图片中文字

github:http://​https://github.com/charlesw/tesseract​ 例子: https://github.com/charlesw/tesseract-samples 语言数据文件github:https://github.com/tesseract-ocr/tessdata 语言数据文件下载:https://github.com/tess…

不懂怎么识别图片中的文字?在线教你识别文字方法

我们在学习和工作中经常会遇到许多电子版、纸质版的资料和文件,但当我们需要复制这些资料的文本内容时,如果不借助识别软件,是很难快速地将它们复制粘贴出来。今天,我就来告诉大家几个简单的方法,教大家怎么识别图片中…

实现一个文字识别(图片转文字)工具

00 前言 最近做ppt,看到有些图片中的文字内容很好,一张一张地码字很累还很费时间。就想着有空做一个文字识别的小工具,方便办公流程。在网上查了一下资料,百度智能云提供了文字识别的接口,可以直接调用,挺方…

Android上图片文字识别

前言 OCR 是 Optical Character Recognition 的缩写,翻译为光学字符识别,指的是针对印刷体字符,采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,通过识别软件将图像中的文字转换成文本格式,供文字处理软…

图片转文字,实用的图片文字识别工具

我们在平时的工作和学习生活中,一旦碰到一些需要拷贝下来的图片上的文字,通常我们的做法就是手动抄录文字,或者对照图片在电脑上敲打这些文字。 其实,现在已经有很多图片文字识别软件,我们可以直接利用工具来帮助我们…

如何识别图片中的文字?三种方法轻松搞定

在我们日常办公中,常常需要将纸质文件的文字提取出来,转为电子档,如果字比较少的情况,还可以手打。但是如果字比较多的话,就有些累了,还可能耽误后面的工作,是不是有小伙伴和我一样有这种困扰呢…

tesseract-ocr识别英文和中文图片文字以及扫描图片实例讲解

tesseract-ocr识别英文和中文图片文字以及扫描图片实例讲解 本文参考http://blog.sina.com.cn/s/blog_4aa166780101cji7.html实现,在这里感谢该文章的作者。 OCR(Optical Character Recognition):光学字符识别,是指对图片文件中的文字进行分析识别,获取…

识别图片中文字的三种方法/图片转文字

一、钉钉 钉钉内置了很多小功能。打开手机钉钉,点击左下角的消息按钮,然后点击右上角的号-扫一扫,点击拍图识字选中需要识别的文字即可。 二、QQ 打开手机QQ,点击右上角的+号-扫一扫之后,点击转文字把图片…

【老保姆教程】:Tesseract-OCR图片文字识别

文章目录 🌟介绍一波🌟小安装🌟配置环境变量⭐️tesseract-ocr配置⭐️tessdata语言配置⭐️检测环境变量是否安装成功 🌟语言包的配置使用🌟CMD命令框中进行图片识别操作⭐️举例一:识别数字⭐️举例二&am…

tesseract:从图片中识别文字信息

一、安装 tesseract 安装过程:https://blog.csdn.net/fengbohello/article/details/119272478 二、安装训练后的语言文件 下载英文数据:https://github.com/tesseract-ocr/tessdata/blob/master/eng.traineddata 下载简体中文数据:https:…

ChatGPT在智能外呼机器人领域的应用

随着人工智能技术的不断发展,自然语言处理(NLP)技术也逐渐成为各行各业的热门技术。其中,ChatGPT技术是近年来备受关注的技术之一。ChatGPT技术是一种基于自然语言处理和深度学习的人工智能技术,它可以处理自然语言文本,实现自动化…

Linux mailutils 如何使用 mail 指令在命令行发送邮件

Linux mailutils 如何使用 mail 指令在命令行发送邮件 一、mail 指令的说明 查看 mail 的帮助信息 mail --help能看到一些可用的参数 -A 添加文件作为邮件附件s 设置邮件标题 二、一般用法 1. 填写目标邮箱 mail kylebing163.com点击回车之后,它会让你输入抄…

linux中使用mail命令发送邮件详解

linux中使用mail命令发送邮件详解 1、最简单的三种发邮件方式 第一种 #可以把当前的shell当成编辑器来使用,编辑完成后使用ctrld来结束编辑并发送 mail -s test 12121qq.com第二种 #使用|进行编辑发送 echo "test"|mail -s test 12121qq.com第三种 #…

通讯白名单的设置与使

通讯白名单是指只有白名单中的人员可以给该用户发送电子邮件和微讯,如果没有设置通讯白名单,系统中所有的人员都可以给其发送电子邮件和微讯。 通讯白名单的设置 在系统管理--组织机构设置--用户管理中点击要设置人员对应的“更新”按钮,更…

哪个更安全?白名单还是黑名单?Agent端对监控指标黑白名单的支持

“实际上,agent端指标的白名单和黑名单也是Zabbix培训中的一个重要主题。”   ——Kaspars Mednis , 全球培训师负责人,Zabbix SIA   本文整理自Kaspars 在2020Zabbix中国峰会的演讲,ppt获取链接见文末。更多演讲视频可关注官方Bilibili账…

nginx配置IP白名单

分析nginx访问日志,有哪些IP访问过nginx。 命令参考:awk {print $1} logs/access.log | sort | uniq -c | sort -nr -k1 输出的效果案例: 1053 192.168.3.15 893 192.168.3.10 818 192.168.0.8 1、添加IP白名单文件 在nginx目录的 conf …

Linux如何给服务器增加白名单

1、查看系统白名单配置: iptables -L -n 2、增加白名单(19.40.145.140 是需要增加的服务器IP): iptables -I INPUT -s 19.40.145.140/32 -p tcp -j ACCEPT 注:-I(I是i的大写) 3、查看防火墙状…

任正非:小公司,不要有太多方法论,把豆腐磨好就有人买

推荐阅读:16 款 ChatGPT 工具,太炸裂了! 不同性格、不同特长、不同偏好的人能否凝聚在组织目标和愿景的旗帜下,靠的就是管理者的宽容。 来源 | 新商业思想库 作者 | 任正非 “烧不死的鸟是凤凰,从泥坑里爬出来的才是圣…

电商商城小程序项目完整源码(微信小程序)

微信公众号:创享日记 发送:简商城 获取完整源码(导入微信开发者工具即可) 【ChatGPT】前些天发现了一个巨牛的人工智能学习电子书,通俗易懂,风趣幽默,无广告,忍不住分享一下给大家。…

死磕数据库系列(二十):MySQL 数据库 DDL、DML、DQL、DCL 语言理论与实践(sql 8.0 版)...

点关注公众号,回复“1024”获取2TB学习资源! 今天,民工哥带大家一起来学习一下 MySQL 数据库的 DDL、DML、DQL、DCL 这几种语言的理论知识与实践。如有帮助,请点在看、转发支持一波!!! DDL&…