我有1000份调查表,需要先扫描这些调查表,然后将其上载到我的C#系统上,以提取数据并将其输入数据库。调查是手写的1)文本框和2)复选框的组合。我目前正在使用Azure Read Api提取手写文本,例如下面的问题4返回“ Python”和“编码”。
所以我的问题; Azure API(读取或OCR等)是否可以使我能够提取标记了复选框的数据?例如请参阅下面的问题#1-我需要返回一个字符串,说“不同意”,任何Azure API都可能实现此功能,还是需要在其他地方查看?如果是这样,我可以使用什么API或库来获取手写的复选框数据?
拥有iText7或IronOCR的人可以告诉我这些库是否允许我提取下面的复选框数据吗?
调查示例:
答案不是太简单,它涉及创建自定义代码以通过第三方库自己解析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; }
}
我建议使用IronOCR至rasterize将PDF转换为图像。
[使用您的图像,在复选框字典上进行迭代,并使用边界点,逐像素移动并获取像素的颜色。将颜色存储在列表中,然后获取复选框内所有像素的平均颜色。如果平均值高于用于确定是否进行检查的阈值,则设置IsChecked布尔值。
对于单选框,您可能需要一个不同的数据对象并存储圆的中心像素。对于圆,您应该存储centerX和centerY以及圆的半径,并使用Bresenham Circle algorithm知道要检查的像素周围。