首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python无边界表提取问题

Python无边界表提取问题
EN

Stack Overflow用户
提问于 2018-11-08 14:03:34
回答 3查看 9.6K关注 0票数 8

我正在努力提取一些无边界的表格,如下图所示,这些表格来自pdf文件。我已经安装了python,如图中所示,它只适用于边缘表。详情如下:

平台- Linux-4.5.5-300.fc24.x86_64-x86_64-with-fedora-24-Twenty_Four

sys -Python3.6.1(默认,2017年5月15日,11:42:04)GCC 6.3.1 20161221 (红帽6.3.1-1)

numpy - NumPy 1.15.4

cv2 - OpenCV 3.4.3

camelot - Camelot 0.3.2

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-08-01 04:11:32

要改进检测区域,可以增加edge_tol (默认值: 50)值,以抵消文本垂直放置相对较远的影响。较大的edge_tol将导致更长的文本被检测到,从而改善了对表区域的猜测。让我们使用值为500。

代码语言:javascript
复制
>>> tables = camelot.read_pdf('edge_tol.pdf', flavor='stream', edge_tol=500)
>>> camelot.plot(tables[0], kind='contour')
>>> plt.show()
>>> tables[0].df
票数 11
EN

Stack Overflow用户

发布于 2019-03-06 16:13:40

Camelot默认使用格子,它依赖于划分细胞的清晰线条。

对于没有行的表,要使用流:

代码语言:javascript
复制
tables = camelot.read_pdf('your_file_name.pdf', flavor = 'stream')
票数 6
EN

Stack Overflow用户

发布于 2021-02-09 11:50:26

另一个可能有帮助的解决方案是明确地设置table_areas,例如,设置页面 的大小:

代码语言:javascript
复制
# A4 portrait, MediaBox[0 0 595 842]
tables = camelot.read_pdf("filename.pdf", table_areas=["0,842,595,0"])

您可以通过Camelot的可视化调试特性找到该区域的大小,或者通过使用文本编辑器打开PDF并检查MediaBox或CropBox维度(注意,它们不使用相同的坐标约定)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53209335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档