在学习Python实现OCR识别的时候遇到问题

在学习使用Python实现OCR识别的时候 出现了问题

现在是能够使用模型将内容识别输出,但是有很多我并不需要的信息,要如何才能准确的通过代码逻辑输出我想要的那一行信息或者将我想要的信息放到一个列表之类的地方再输出。

我想要达到的目标就是:准确的通过代码逻辑输出我想要的那一行信息或者将我想要的信息放到一个列表之类的地方再输出。

该回答引用GPTᴼᴾᴱᴺᴬᴵ
在OCR识别的过程中,可能会出现很多干扰信息,需要进行过滤,只提取出自己需要的信息。具体实现方法可能因为不同的OCR引擎和识别场景而有所差异,但一般可以按以下步骤进行:

  1. 对OCR输出的文本进行预处理,如去除空格、特殊符号等,将文本转化为一行或一段。
  2. 根据自己需要的信息的特征,如关键词、位置等,筛选出需要的信息。可以使用正则表达式或者其他匹配方法来实现。
  3. 将筛选出的信息进行进一步的处理,如去除冗余信息、格式化输出等。
  4. 将处理后的信息输出,可以选择输出到文件、数据库、Web页面等。

下面是一个示例代码,以Tesseract OCR引擎为例,假设需要识别身份证上的姓名和身份证号码:

import pytesseract
import re

# 加载OCR引擎
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

# 读取身份证图片
img = 'id_card.png'

# OCR识别,输出原始文本
text = pytesseract.image_to_string(img, lang='chi_sim')
print(text)

# 去除空格、换行等
text = re.sub(r'\s+', '', text)

# 筛选姓名和身份证号码
pattern_name = r'姓名([\u4e00-\u9fa5]{2,5})'
pattern_id = r'身份证号码(\d{17}[\dX])'
name = re.search(pattern_name, text).group(1)
id_num = re.search(pattern_id, text).group(1)

# 输出姓名和身份证号码
print('姓名:', name)
print('身份证号码:', id_num)


这个示例代码中,首先使用Tesseract OCR引擎对身份证图片进行识别,得到原始文本。然后使用正则表达式筛选出姓名和身份证号码,最后输出这两个信息。在实际使用中,还可以根据需要对姓名和身份证号码进行进一步的处理和格式化。

可以使用正则表达式来筛选出你想要的信息,例如使用re.findall()函数来查找满足正则表达式的内容,并把这些内容放入列表中,然后再输出。

小魔女参考了bing和GPT部分内容调写:
要实现这个目标,首先需要使用OCR识别技术,将文本内容识别出来,然后再使用Python的字符串处理函数,对识别出来的文本进行处理,提取出我们想要的信息,最后将提取出来的信息放到一个列表中,就可以输出我们想要的内容了。

比如,我们想要提取出一个文本中的所有数字,那么我们可以先使用OCR识别技术,将文本内容识别出来,然后使用Python的字符串处理函数,比如findall()函数,可以搜索字符串中的模式,将所有的数字提取出来,最后将提取出来的数字放到一个列表中,就可以输出我们想要的内容了。

import re

text = "This is a text with numbers 123, 456 and 789"

# 使用正则表达式提取出所有的数字
numbers = re.findall(r'\d+', text)

# 将提取出来的数字放到一个列表中
number_list = []
for number in numbers:
    number_list.append(number)

# 输出提取出来的数字
print(number_list)

回答不易,记得采纳呀。