python 如何找到模型号在OCR生成的图像中

kd3sttzy  于 2023-09-29  发布在  Python
关注(0)|答案(2)|浏览(79)

(例子虽有改动,但思路是一样的)
我正在找一个SRD型号。在产品标签上的照片
下面是一个标签示例:

条件是:
1.不同代的产品在标签上的信息结构不同。

  1. SRD型号它的长度是可变的,每一代都不同。
  2. SRD型号可以只包含数字,也可以包含数字和字母,每一代都不同。
    所以问题是,有没有一种方法可以找到SRD型号No的子串。在OCR生成的字符串中,其他然后硬编码所有可能的变化?
z18hc3ub

z18hc3ub1#

下面是一个遵循@安格斯精梳机建议的示例脚本:

import pytesseract
import numpy as np
import cv2
from cv2 import imread, cvtColor, COLOR_BGR2HSV as HSV, inRange, getStructuringElement, resize

from pytesseract import image_to_data, Output

def extract_SRD(filename):     
    img = cv2.imread(filename)
    img_copy = img.copy()
    img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    img_blur = cv2.GaussianBlur(img_gray, (3,3),0)

    mydata = pytesseract.image_to_data(img_blur, output_type=Output.DICT, config='--psm 6')
    SRD = mydata['text'][mydata['text'].index('SRD')+2]

    return SRD

filename = 'wm3tG.png'

SRD  = extract_SRD(filename)

print(SRD)

此代码段返回:5427G2**
这里重要的一行是SRD = mydata['text'][mydata['text'].index('SRD')+2]。在这里定义用于检索SRD代码的逻辑。在这个例子中,我只是查询SRD之后的第二个字符串,因此跳过了单词“Model”。
我建议对这个例子进行微调,检查输出字典中的特定值是否包含 *“SRD”。然后,您可以简单地查找下一个字符串:

  • 如果下一个字符串包含“Model”,则返回其后的字符串
  • 如果没有,则返回字符串。
bttbmeg0

bttbmeg02#

使用OCR将产品标签捕获为文本。搜索字符串SRD型号:然后抓取文本1字符后的空间到下一个空格,这是你的SRD号码。

相关问题