购物小票识别知识点总结

一、如何识别购物小票

1.首先通过AI识别,将购物小票上的商品进行识别,之后再进行小票识别

2.采用OCR识别小票上的文字,输出对应的文字和坐标

3.将识别的文字和坐标一对一进行组合    for b_, c_ in zip(det_box, recs),并按照纵坐标的大小进行排列(坐标至关重要)

4.根据小票的格式进行识别模型的创建,将小票上的每一种商品的“货号”、“商品名称”、“数量”、“价格”都识别出来,最终形成每条信息对应一种商品的形式

5.将小票识别出的每一条商品信息与之前AI拍照的识别进行进行匹配,如果匹配上就能关联起来

二、小票识别的知识点总结

1.已知4个点的坐标,求中心点的纵坐标

box_center = list(np.mean(np.array(box_[0], dtype=int), axis=0))

axis=0表示对数组的列(纵坐标)进行运算

2.python中的isdigit()函数

用于判断一个字符串是否只由数字组成,如果字符串中的所有字符都是数字,返回True,否则返回False

char_info="130800400180"

str(char_info).isdigit() = True

3.re.compile(r'¥?[0-9]+\.[0-9]{0,2}')

在Python中,re.compile() 函数用于编译一个正则表达式模式,返回一个模式对象。

综合来看,这个正则表达式用于匹配可选的人民币符号,后面跟着至少一个数字,然后是一个点号,最后是0到2个数字。这种模式通常用于匹配货币数额,尤其是小数点后最多两位的数额,例如价格或费用。

例如:

¥123.45 将会匹配
99.9 也将会匹配
123. 不会匹配,因为至少需要小数点后跟着一个数字
¥.50 不会匹配,因为需要至少一个数字在小数点前面

4.re.findall(num_point, str_char)

在Python中,re.findall(pattern, string) 函数是 re(正则表达式)模块中的一个函数,用于在字符串中查找所有与正则表达式模式匹配的非重叠匹配项,并返回一个包含这些匹配项的列表。

import re

# 正则表达式模式,匹配任何数字
num_point = r'\d+'

# 要搜索的字符串

str_char = 'There are 123 apples and 456 oranges.'

# 使用 re.findall 查找所有数字

matches = re.findall(num_point, str_char)

print(matches)  # 输出: ['123', '456']

在这个例子中,正则表达式模式 \d+ 表示匹配一个或多个数字字符。re.findall 函数找到了所有匹配的数字并返回了一个包含这些数字的列表。

如果你提供的 num_point 变量不是一个有效的正则表达式模式,或者 str_char 不是一个字符串,那么 re.findall 函数将无法正常工作,并可能抛出一个异常。确保 num_point 是一个正确的正则表达式模式,且 str_char 是你想要搜索的字符串。

5.matcher = difflib.SequenceMatcher(None, ticket_name, gname)

ython的difflib库中的SequenceMatcher类的使用。difflib库是Python标准库中的一个模块,它提供了一些方法来比较序列的相似性

SequenceMatcher是difflib库中的一个类,它可以接受两个序列(在这个例子中是字符串ticket_name和gname),并计算两个序列之间的相似度

创建一个SequenceMatcher对象,该对象会比较ticket_name和gname两个字符串的相似度。None参数表示在比较时不使用任何过滤函数

6.similarity[0, j] = matcher.ratio()

matcher.ratio():返回两个序列的相似度,结果是一个介于0(完全不相似)和1(完全相同)之间的浮点数。

7.num_index.sort(key=lambda x: y_cors[x], reverse=False)

这是一个排序操作,根据列表num_index中的元素在y_cors字典中对应的值进行排序,排序方式是升序(reverse=False)

  • 24
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值