【问题标题】:OpenCV - Detecting handwritten mark of checkboxes from questionnaireOpenCV - 从问卷中检测复选框的手写标记
【发布时间】:2019-09-24 10:28:41
【问题描述】:

我正在处理大量的患者摄入量问卷。这是问卷的扫描示例。我需要处理它们并存储到数据库中,但是在检测这些手写标记时遇到了问题:

患者摄入量调查表

问卷中有不同类型的标记。一些复选框被涂成黑色。一些复选框有勾号或十字标记。这些标记确实意味着选中了复选框。我需要使用 opencv2 来识别选中了哪些框。

我尝试了光学字符识别,但结果无济于事。标记的形状太多,因此 OCR 将它们识别为不同的字符。我需要弄清楚在问卷中选中了哪些框。 cv2 可以解决这个问题,但我不知道。

# Expected input: An image of Questionnaire

# Expected output:
Have you seen other health care providers for your problems of dizziness 
and/or imbalance? [selected] Yes [unselected] No

Have you been through a program of Vestibular and Balance Rehabilitation 
Therapy? [selected] Yes [unselected] No

=============================
[unselected] vertigo
[unselected] falling
...
[selected] Drunk-like

=============================
[selected] Vertigo
[selected] Falling
[selected] Fatigue
[selected] Wooziness
[selected] Spinning
[unselected] Disconnected

我之前使用 Python tesseract OCR 包的尝试:

from PIL import Image
import pytesseract
path ="page1.jpg"
img = Image.open(path)
text = pytesseract.image_to_string(img, lang='eng', config='-c preserve_interword_spaces=1 --psm 6')
print text

O Vertigo           O Falling              O Fatigue                 W Vertigo          YA Falling             y[ Fatigue
[ Wooziness     O Spinning         O Disconnected       A \Wooziness     Q Spinning         [ Disconnected
O Imbalance      B Drunk-like        O Swirling             O Imbalance      O Drunk-like       @ Swirling      ;
O Faint            [ Rocking        O Can’tfocus         M Faint           4 Rocking          O Can’t focus
O Lightheaded O Swaying -~ . -0 Unsteady       O Lightheaded O Swaying       N Unsteady
O “onaboat” O Swimming sensation                      Weonaboat” @ Swimming sensation
O Other:                                                        0 Other:

我的想法是:如果 OCR 将矩形复选框识别为字符“O”或数字“0”,则应取消选中该复选框。否则应该选择它。基于该规则,我可以根据 OCR 结果检测手写标记。我将测试几个样本并查看精度,但我不确定这是否可行。如果是这样,我 稍后我会回复这篇文章。

【问题讨论】:

  • 你看过[使用 OpenCV 查找复选框轮廓])stackoverflow.com/questions/55763858/…) 吗?也许您可以找到空复选框,然后所有其他未找到的轮廓将是手写填充的复选框
  • 查看 AWS 文本。他们有一个很好的 API 来阅读页面、表格和表单中的文本。

标签: python opencv image-processing computer-vision omr


【解决方案1】:

从示例中可以看出,黑色在标记的复选框区域中占主导地位。您可以使用 OCR 通过检测文本来定位复选框区域(假设您扫描的位置永远不会是精确的),我建议您只计算复选框区域中像素值的平均值(它不必100% 精确,只要你用区域大小平均)。

【讨论】:

    猜你喜欢
    • 2020-11-14
    • 1970-01-01
    • 2020-10-29
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多