2

使用像craft,dbnet等文本检测模型,我可以检测文本并使用robustscanner,crnn等模型识别它们。同时检测图像中的文本我得到特定检测文本的位置。现在我想做的是与OMR(光学标记识别问题)。它可能类似于 OMR 和 OCR 的组合(只是我的想法)。请查看下面的图片 在此处输入图像描述

在此处输入图像描述

[在此处输入图像描述

在此处输入图像描述

现在我想获取那些勾选框的位置,所以我知道选择了哪一个。我正在考虑首先获取勾选框的位置,然后计算该框与最近右侧框的 l2 距离(来自文本检测模型的输出),以确保选择了哪个选项。这只是我的幼稚解决方案,可能有缺陷,如果您有更好的解决方案提供,请告诉我。我尝试了下面讨论的代码:Detect All Circles in an image (Optical Mark Recognition) using Python OpenCV 但是这个模板匹配解决方案对我不起作用,即使对于阈值 0.6 它也给出了糟糕的输出和更高的阈值,如 0.8它根本不提供任何输出:

import cv2
import numpy as np
from matplotlib import pyplot as plt


img = cv2.imread('/content/test.jpg', 0)

template = cv2.imread('/content/template.PNG', 0)
h, w = template.shape

res = cv2.matchTemplate(img,template,cv2.TM_CCOEFF_NORMED)
threshold = 0.4
loc = np.where( res >= threshold)
color = (255, 0, 0)
thickness = 2
for pt in zip(*loc[::-1]):
    cv2.rectangle(img, pt, (pt[0] + w, pt[1] + h), color, thickness)

cv2.imwrite('/content/res.png',img)
plt.imshow(img)

输出 :

在此处输入图像描述

所以,也许像这样的模板匹配方法:https ://www.pyimagesearch.com/2021/03/22/opencv-template-matching-cv2-matchtemplate/和这个:图像处理:“可口可乐罐”的算法改进对我的认可 还不够?或者我错过了什么?我可以从像 OCR 这样的图像中检测和识别文本,现在除了 OCR 之外,我的目标也是知道选择了哪个选项。我如何设计一个 ML 管道来有效地解决这个问题?提前致谢。

4

0 回答 0