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

extracting check-box data from PDFs with Azure Read/OCR API

我有 1000 份调查表需要扫描,然后上传到我的 C# 系统以提取数据并将其输入数据库。这些调查混合了手写的 1) 文本框和 2) 复选框。我目前正在使用 Azure Read Api 来提取应该可以正常工作的手写文本,例如下面的问题 #4 returns 'Python' 和 'coding'.

所以我的问题;任何 Azure API(读取或 OCR 等)都会给我提取标记了复选框的数据的能力吗?例如请参阅下面的问题 #1 - 我需要一个字符串返回 'disagree',这对任何 Azure API 是否可行,或者我需要寻找其他地方吗?如果可以,我可以使用什么 API 或库来获取手写的复选框数据?

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

调查示例:

这个问题的答案并不过分简单,涉及创建自定义代码以通过第三方库自行解析 PDF。

由于您的表单具有已知形状,因此您知道复选框的位置。您应该为页面上的每个复选框构造一个 "Checkbox name" 和 "Checkbox data" 的字典。数据对象可以是如下所示的对象:

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 to rasterize PDF 到图像。

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

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

下面是在 GIMP 中获取光标所在位置的像素坐标的示例。