使用YOLOV3解析PDF

有许多python库可以解析pdf,Camelot是最好的之一。尽管它在文本上表现良好,但是它在表格上表现不佳,特别是在段落内的表格上。
Camelot提供了通过变量table_areas=“x1,y1,x2,y2”指定要解析的区域的选项,其中(x1,y1)是PDF坐标空间中的左上角,(x2,y2)是右下角。当填写时,结果会显著增强。

解释基本概念

自动化表格解析的一种方法是训练一种能够返回环绕表格的边界框的坐标的算法,如以下管道中所详述:

如果原始pdf页面是基于图像的,我们可以使用ocrmypdf转换为基于文本的页面,以便能够获得表格中的文本。然后,我们执行以下操作:

  • 使用pdf2img将pdf页面转换为图像页面
  • 使用经过训练的算法来检测表的区域。
  • 使用_图像维度_规范化边界框,这使得使用通过PyPDF2获得的_pdf维度_在pdf空间中获得区域。
  • 喂养卡米洛特的地区,并获得相应的熊猫巢。

当检测到pdf图像中的表格时,我们扩展边界框,以便完全包含它,如下所示:

 表格检测

允许检测表的算法,只不过是yolov3,我建议你阅读我以前关于对象检测的文章。我们对算法进行了微调,以检测表并重新训练所有架构。为此,我们执行以下步骤:

  • 使用Makesense创建一个训练数据库,该工具支持yolo格式的导出:

  • 在AWS EC2上训练经过修改以满足我们目的的yolov3存储库,我们得到以下结果:

 要求

所有python要求都包含在文件package.txt中,您需要做的就是运行以下命令行:

1
pip install -r packages.txt

 预测

可以使用以下命令行在PDF页面上进行预测:

1
python predict_table.py --pdf_path pdfs/boeings.pdf --page 2

 它有两个参数:

  • pdf_path:原始pdf文件所在的位置
  • page:要解析的页面

 示例

注意:遵循相同的步骤,我们可以训练算法来检测PDF页面中的任何其他对象,例如可以从图像页面中提取的图形和图像。