Python OpenCV-从调查问卷中检测复选框的手写标记

Python OpenCV-从调查问卷中检测复选框的手写标记,python,opencv,image-processing,computer-vision,omr,Python,Opencv,Image Processing,Computer Vision,Omr,我正在做很多病人入院调查问卷。以下是问卷的扫描示例。我需要处理它们并存储到数据库中,但我在检测这些手写标记时遇到了问题: 患者摄入问卷 问卷中有不同类型的分数。有些复选框被漆成黑色。某些复选框带有勾号或十字标记。这些标记都表示选中了复选框。我需要使用opencv2来识别选中的框 我尝试过光学字符识别,但结果并没有真正的帮助。标记的形状太多,因此OCR将其识别为不同的字符。我需要弄清楚在问卷中勾选了哪些框。cv2本可以解决这个问题,但我不知道 # Expected input: An image

我正在做很多病人入院调查问卷。以下是问卷的扫描示例。我需要处理它们并存储到数据库中,但我在检测这些手写标记时遇到了问题:

患者摄入问卷

问卷中有不同类型的分数。有些复选框被漆成黑色。某些复选框带有勾号或十字标记。这些标记都表示选中了复选框。我需要使用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包的尝试:

从PIL导入图像
导入pytesseract
path=“page1.jpg”
img=Image.open(路径)
text=pytesseract.image_to_string(img,lang='eng',config='-c preserve_interword_spaces=1--psm 6')
打印文本
我的想法是:如果OCR将矩形复选框识别为字符“O”或数字“0”,则应取消选中该复选框。否则,应选择它。基于该规则,我可以根据OCR结果检测手写标记。我将测试几个样本,看看精度,尽管我不确定这是否可行。如果是的话,我很高兴
过一会儿,我将回到这篇文章。

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

您看过吗[使用OpenCV查找复选框轮廓])?也许您可以找到空复选框,然后所有未找到的其他轮廓都将是手写的填充复选框勾选AWS Textract。它们有一个很好的API用于读取页面、表格和表单中的文本。
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: