使用Azure Read / OCR API从PDF提取复选框数据

问题描述 投票:0回答:1

我有1000份调查表,需要先扫描这些调查表,然后将其上载到我的C#系统上,以提取数据并将其输入数据库。调查是手写的1)文本框和2)复选框的组合。我目前正在使用Azure Read Api提取手写文本,例如下面的问题4返回“ Python”和“编码”。

所以我的问题; Azure API(读取或OCR等)是否可以使我能够提取标记了复选框的数据?例如请参阅下面的问题#1-我需要返回一个字符串,说“不同意”,任何Azure API都可能实现此功能,还是需要在其他地方查看?如果是这样,我可以使用什么API或库来获取手写的复选框数据?

拥有iText7或IronOCR的人可以告诉我这些库是否允许我提取下面的复选框数据吗?

调查示例:

enter image description here

c# azure api microsoft-cognitive itext7
1个回答
0
投票

答案不是太简单,它涉及创建自定义代码以通过第三方库自己解析PDF。

由于表单的形状已知,因此您知道复选框的位置。您应该为页面上的每个复选框构造一个由“复选框名称”和“复选框数据”组成的字典。数据对象可以是看起来像这样的对象:

public class CheckboxData {
    public int startX { get; set; }
    public int startY { get; set; }
    public int endX { get; set; }
    public int endY { get; set; }
    public bool IsChecked { get; set; }
}

我建议使用IronOCRrasterize将PDF转换为图像。

[使用您的图像,在复选框字典上进行迭代,并使用边界点,逐像素移动并获取像素的颜色。将颜色存储在列表中,然后获取复选框内所有像素的平均颜色。如果平均值高于用于确定是否进行检查的阈值,则设置IsChecked布尔值。

对于单选框,您可能需要一个不同的数据对象并存储圆的中心像素。对于圆,您应该存储centerX和centerY以及圆的半径,并使用Bresenham Circle algorithm知道要检查的像素周围。

下面是在GIMP中获取光标所在位置的像素坐标的示例。Getting pixel coordinates of image file

© www.soinside.com 2019 - 2024. All rights reserved.