范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

实战使用OpenCV和PyTesseract对文档进行OCR

  随着世界各地的组织都希望将其运营数字化,将物理文档转换为数字格式是非常常见的。这通常通过光学字符识别 (OCR) 完成,其中文本图像(扫描的物理文档)通过几种成熟的文本识别算法之一转换为机器文本。当在干净的背景下处理打印文本时,文档 OCR 的性能最佳,具有一致的段落和字体大小。
  在实践中,这种情况远非常态。发票、表格甚至身份证明文件的信息分散在整个文件空间中,这使得以数字方式提取相关数据的任务变得更加复杂。
  在本文中,我们将探索一种使用 Python 为 OCR 定义文档图像区域的简单方法。我们将使用信息分散在整个文档空间的文档示例——护照。以下样本护照放置在白色背景中,模拟复印的护照副本。
  从此护照图像中,我们希望获得以下字段:  名字/名字 姓氏 中文名 汉字的姓氏 护照号码
  首先,我们将导入所有必需的包。最重要的包是用于计算机视觉操作的OpenCV和PyTesseract,它是强大的 Tesseract OCR 引擎的 Python 包装器。  from cv2 import cv2 import pytesseract import pandas as pd import numpy as np import math from matplotlib import pyplot as plt
  接下来,我们将使用 cv2.imread 读取我们的护照图像。我们的第一个任务是从这个伪扫描页面中提取实际的护照文件区域。我们将通过检测护照的边缘并将其从图像中裁剪出来来实现这一点。  img = cv2.imread("imagesPassport.png",0) img_copy = img.copy() img_canny = cv2.Canny(img_copy, 50, 100, apertureSize = 3)
  OpenCV 库中包含的Canny 算法使用多阶段过程来检测图像中的边缘。使用的最后三个参数是较低阈值和较高阈值(分别为 minVal 和 maxVal),以及内核大小。
  运行 Canny 算法会产生以下输出。请注意,由于选择了低阈值,因此保留了最少的边缘。
  img_hough = cv2.HoughLinesP(img_canny, 1, math.pi / 180, 100, minLineLength = 100, maxLineGap = 10)
  接下来,我们在边缘检测图像上使用另一种称为霍夫变换的算法,通过检测线绘制出护照区域的形状。minLineLength 参数定义了一个形状必须包含多少像素才能被视为"线",而 maxLineGap 参数表示像素序列中被视为相同形状的最大允许间隙。  (x, y, w, h) = (np.amin(img_hough, axis = 0)[0,0], np.amin(img_hough, axis = 0)[0,1], np.amax(img_hough, axis = 0)[0,0] - np.amin(img_hough, axis = 0)[0,0], np.amax(img_hough, axis = 0)[0,1] - np.amin(img_hough, axis = 0)[0,1]) img_roi = img_copy[y:y+h,x:x+w]
  我们的护照四面都是直线——文件的边缘。因此,有了我们的线条信息,我们可以选择通过检测到的线条的外边缘来裁剪我们的护照区域:
  将护照竖直旋转后,我们开始在图像中选择要捕获数据的区域。几乎所有国际护照都符合ICAO 标准,该标准概述了护照页的设计和布局规范。这些规范之一是机读区 (MRZ),即护照文件底部有趣的两行。你们的文件的视觉检查区 (VIZ) 中的大部分关键信息也包含在机读区中,机器可以读取这些信息。在我们的练习中,那台机器是我们值得信赖的 Tesseract 引擎。  img_roi = cv2.rotate(img_roi, cv2.ROTATE_90_COUNTERCLOCKWISE) (height, width) = img_roi.shape img_roi_copy = img_roi.copy() dim_mrz = (x, y, w, h) = (1, round(height*0.9), width-3, round(height-(height*0.9))-2) img_roi_copy = cv2.rectangle(img_roi_copy, (x, y), (x + w ,y + h),(0,0,0),2)
  让我们使用四个维度定义护照图像中的 MRZ 区域:水平偏移(从左侧)、垂直偏移(从顶部)、宽度和高度。对于 MRZ,我们将假设它包含在我们护照的底部 10% 内。因此,使用 OpenCV 的矩形函数,我们可以在区域周围绘制一个框来验证我们的尺寸选择。
  img_mrz = img_roi[y:y+h, x:x+w] img_mrz =cv2.GaussianBlur(img_mrz, (3,3), 0) ret, img_mrz = cv2.threshold(img_mrz,127,255,cv2.THRESH_TOZERO)
  在新图像中裁剪所选区域。我们将对裁剪后的图像进行一些基本的图像预处理,以促进更好的读出——高斯模糊和简单阈值。
  mrz = pytesseract.image_to_string(img_mrz, config = "--psm 12")
  我们现在准备应用 OCR 处理。在我们的 image_to_string 属性中,我们配置了"带有方向和脚本检测(OSD)的稀疏文本"的页面分割方法。这旨在捕获我们图像中的所有可用文本。
  将 Pytesseract 输出与我们的原始护照图像进行比较,我们可以观察到读取特殊字符时的一些错误。为了获得更准确的读数,可以使用 Pytesseract 的白名单配置进行优化;然而就我们的目的而言,电流读数的准确性就足够了。  mrz = [line for line in mrz.split(" ") if len(line)>10] if mrz[0][0:2] == "P<":   lastname = mrz[0].split("<")[1][3:] else:   lastname = mrz[0].split("<")[0][5:] firstname = [i for i in mrz[0].split("<") if (i).isspace() == 0 and len(i) > 0][1] pp_no = mrz[1][:9]
  根据 ICAO 关于 MRZ 代码结构的指导原则应用一些字符串操作,我们可以提取护照持有人的姓氏、名字和护照号码:
  不是英文的文本怎么办?没问题——Tesseract 引擎已经为100 多种语言训练了模型(尽管每种支持的语言的 OCR 性能的稳健性不同)。  img_roi_copy = img_roi.copy() dim_lastname_chi = (x, y, w, h) = (455, 1210, 120, 70) img_lastname_chi = img_roi[y:y+h, x:x+w] img_lastname_chi = cv2.GaussianBlur(img_lastname_chi, (3,3), 0) ret, img_lastname_chi = cv2.threshold(img_lastname_chi,127,255,cv2.THRESH_TOZERO) dim_firstname_chi = (x, y, w, h) = (455, 1300, 120, 70) img_firstname_chi = img_roi[y:y+h, x:x+w] img_firstname_chi = cv2.GaussianBlur(img_firstname_chi, (3,3), 0) ret, img_firstname_chi = cv2.threshold(img_firstname_chi,127,255,cv2.THRESH_TOZERO)
  使用相同的区域选择方法,我们再次为目标数据字段定义维度(x、y、w、h),并对裁剪后的图像提取应用模糊和阈值处理。
  lastname_chi = pytesseract.image_to_string(img_lastname_chi, lang = "chi_sim", config = "--psm 7") firstname_chi = pytesseract.image_to_string(img_firstname_chi, lang = "chi_sim", config = "--psm 7")
  现在,在我们的 image_to_string 参数中,我们将添加输入文本的语言脚本,简体中文。
  要完成练习,请将所有收集的字段传递给字典并输出到表格以供实际使用。
  OCR 感兴趣区域的显式定义只是在OCR 中获取所需数据的众多方法之一。根据你们的用例,使用其他方法(例如轮廓分析或对象检测)可能最有效,正如我们的护照练习所示,在应用 OCR 之前对图像进行适当的预处理是关键。在处理具有不同图像质量的真实文档时,尝试不同的预处理技术以找到最适合你们的文档类型的方法非常重要。

利用热辐射的夜间太阳能技术编译少数異见校正FM0199正文共1222字4图预计阅读时间4分钟概要到目前为止,很多科学家已经在设计和研究夜间太阳能发电技术。澳大利亚新南威尔士大学(UNSW)的Nicholas我国稀土橡胶催化剂工程化技术再获突破首个自主开发的单中心稀土催化剂连续聚合中试成功能源人都在看,点击右上角加关注中国石油网消息(记者朱钊通讯员胡泓梵)记者5月13日从石油化工研究院获悉,4月,石化院特聘专家创新团队自主开发的国内首个单活性中心稀土金属催化剂,在独大厂留不住技术大牛?阿里金榕京东于建强字节梅晓等纷纷离职策划张远方老师整理E商高研院(实效EMBA组)导语阿里巴巴副总裁达摩院副院长金榕最近离职。至此,达摩院曾经的十三名扫地僧中,漆远王刚金榕三人离开了阿里。此外,京东副总裁技术决策委员6年前中国科学家发现恐龙肉身残骸,恐龙复活,可能不再是幻想?在侏罗纪公园中,科学家用一只封存在琥珀中的远古蚊子,复原出了已经灭绝的恐龙。你们还记得这只蚊子有何特殊之处吗?没错,它误打误撞地吸了一只恐龙的血。侏罗纪公园中的蚊子琥珀在现实中,这Windows在中国失去了号召能力Windows11出来这么久了,国内的软件厂商依旧没有跑出来做适配。好歹人家也是世界500强,PC界的领导者,在PC界有着绝对的地位。右下角控制栏到目前为止,没有国产软件支持右下角截至5月,在国外被疯抢的国产手机,价格已经不是主要因素国产手机以往主打价格,以让用户负担得起为首要任务。不可否认,在价格方面具有竞争力是国产品牌的强项,但最近国产品牌在创新和设计方面加快了步伐。看看全球高端手机的销量,你就会发现小米O南方电网广西电网公司获国家数据管理能力成熟度四级认证来源中国科技网蒙琦谢菁赵金想科技日报记者刘昊近日,中国电子信息行业联合会公布了最新一批获得国家数据管理能力成熟度(简称DCMM)等级证书的单位名单,南方电网广西电网公司获国家数据管小米12Ultra全系售价曝光16512GB皇帝版7299元这几个月以来,各大手机厂商都陆续推出了旗下新一代代表性顶级,而小米自去年年底推出了小米12小米12Pro小米12X三款机型后,将近半年已经过去了,但大家期待已久的超大杯小米12Ul日英就合作构建安全通信网达成共识共同社5月2日报道,日本总务大臣金子恭之4月29日在出访地伦敦,与英国主管数字化事务的国务大臣洛佩兹(JuliaLopez)举行会谈,就日英两国政府为构建安全且信赖度高的第五代(558同城以技术和服务赋能招聘行业湖北万家民企集中释放10万岗位湖北万家民企助就业大学生专场招聘动员大会日前召开,1。2万余家民营企业集中释放招聘岗位10万余个。面对严峻的就业形势,58同城积极履行平台社会责任,创新开发出一系列在线智能招聘工具老人88岁了经常打岔,和他讲话还需要很大声,助听器有用吗?只要还有残余听力助听器一般都是有效果的还是建议老人亲自去检测听力试听一下看看具体效果因为具体效果和老人的言语识别率是有很大的关系的建议带老人去验配中心检查体验。如果老人出现也听力下
汽车天窗该如何保养?别到处问人了,掌握几个要点,就能轻松应对汽车天窗,原先厂商为了吸引购车者的兴趣而配置的,现在基本上属于标配了。在换气和采光方面,天窗的作用是十分明显的。很多朋友当初也是看中了全景天窗而入的坑。天窗的优点就不细说了,大家都每天不到1块钱的加热坎肩,1件暖颈贴暖宫带蒸汽眼罩冰袋以前觉得,站着不如坐着,坐着不如躺着!现在办公室坐一天下来,脖子颈椎处莫名地僵硬酸疼,像压了千斤万担一样,绷得紧紧的。再加上办公室的冷气足得不行,一会儿就感觉脖子发凉又发紧。下班后扔掉电视!在线学习家庭影院轻松拥有!捍卫孩子的视力!投影仪高科技时代,网课成为趋势,就算不是因为疫情躲在家里上网课,假期里日常里,我们也会给孩子挑选优质的网课,节约时间,高效进步。更别提孩子喜欢的动画片之类了。孩子们通过电视电脑手机平板等满载450W英特尔火炉处理器!对电脑硬件刻薄摧残电源依然不转之前为大家带来了一片APEXGAMING的650W电源的文章,链接如下风扇不转是不是坏了?美商650W0噪音电源评测,恰饭正确姿势经过官网查询得知,貌似这款电源在负载超过60的时候6000元INTEL最新顶级处理器的打开方式?大火炉半成品如何降伏?看到标题各位小伙伴们相信已经大概猜到本文讲述的内容了,没错,主角就是如何更好地利用好,已经涨价到6000元的英特尔最新11代酷睿I911900K,6000元的价格固然高贵,缺货也必双十一什么数码好物值得买?这几款学生入手正当时,买了不后悔马上就要进入十一月了,很多同学都想要趁着一年一度的电商大促,入手几样实惠好用的数码产品。笔记本电脑手机平板智能穿戴都是热门需求可能不少同学要购买的品类方向早就确定好了,但具体型号尚福利硬核攒机,尽在AMDx京东电脑数码超品日开学在即,想要攒一台硬核PC,作为自己的开学礼物?8月25日,来AMD京东电脑数码超品日,挑选高性能锐龙处理器Radeon显卡超值主板整机,为新学期添加新动力!极速制胜AMD锐龙5父母用机不再愁!OPPO这两个功能太贴心了今年春节,虽然有很多小伙伴选择了留在原地过年,但还是有很多小伙伴回到了家里陪伴自己的父母,不知道大家回家观察到一个现象没有,现在家里的老人,虽然大部分都使用上了智能机,但对智能机的618热门数码产品买啥好?这几款实用又好看,价格真香了618年中促销临近,大家的购物清单准备好了吗?和双11不同,在618中,大家都会更关注数码产品,许多数码厂商都已经开启了618活动,大家不妨多关注一下。而在选购数码产品时,不少人面汽车碰撞测试的结果,对购车有参考价值吗?车主怎么不早说呢汽车碰撞测试(NCAP)主要是模仿汽车在行驶中可能发生的两种比较危险的碰撞方式,为正面和侧面碰撞。另外还有中柱碰撞测试后碰测试等。碰撞测试后的结果由星级表示,星级越高表示该车的碰撞高级感从一件百搭T恤,MUJI同厂空气白T,吸汗透气不变形夏天到了,走在街上,出镜率最高的单品一定是T恤。一个人的风格和品位往往体现在最简单的东西上,简单的一件白T也可以穿出自己的味道。大表姐刘雯,穿白T又有味道又好看又自然。lessis