使用python和Tesseract OCR从文本中提取特定内容

时间:2019-09-16 07:19:00

标签: python image ocr tesseract python-tesseract

我正在使用tesseract OCR从图像文件Image中提取文本。

下面是我从图片中获得的示例文本:

Certificate No. Certificate Issued Date Acoount Reference Unique Doc. Reference IN-KA047969602415880 18-Feb-2016 01:39 PM NONACC(FI)/kakfscI08/BTM LAYOUT/KA-BA SUBIN-KAKAKSFCL0858710154264833O

如何从中提取证书编号?任何提示或解决方案都会在这里为我提供帮助。

2 个答案:

答案 0 :(得分:1)

如果证书编号始终位于此处给出的结构中(2个字母,连字符,17位数字),则可以使用regex

import regex as re

# i took the entire sequence originally but this is just an example
sequence = 'Reference IN-KA047969602415880 18-Feb-2016 01:39'
re.search('[A-Z]{2}-.{17}', seq).group()
#'IN-KA047969602415880'

.search搜索您指定的特定模式,然后.group()返回第一个结果(在这种情况下将只有一个)。您可以在给定的字符串中搜索类似的内容,建议您参考regex here

答案 1 :(得分:1)

在将图像放入Tesseract OCR中之前,对图像进行预处理以去除噪点并平滑文本非常重要。这是使用OpenCV的简单方法

  • 将图像转换为灰度
  • 大津获取二进制图像的阈值
  • 高斯模糊和反转图像

转换为灰度后,我们以Otsu的阈值获取二进制图像

enter image description here

从这里开始,使它稍微模糊,然后反转图像以得到结果

enter image description here

Pytesseract的结果

  

证书号:IN-KA047969602415880

<div id="test"></div>