我正在努力提取一些无边界的表格,如下图所示,这些表格来自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

发布于 2019-08-01 04:11:32
要改进检测区域,可以增加edge_tol (默认值: 50)值,以抵消文本垂直放置相对较远的影响。较大的edge_tol将导致更长的文本被检测到,从而改善了对表区域的猜测。让我们使用值为500。
>>> tables = camelot.read_pdf('edge_tol.pdf', flavor='stream', edge_tol=500)
>>> camelot.plot(tables[0], kind='contour')
>>> plt.show()
>>> tables[0].df发布于 2019-03-06 16:13:40
Camelot默认使用格子,它依赖于划分细胞的清晰线条。
对于没有行的表,要使用流:
tables = camelot.read_pdf('your_file_name.pdf', flavor = 'stream')发布于 2021-02-09 11:50:26
另一个可能有帮助的解决方案是明确地设置table_areas,例如,设置页面 的大小:
# A4 portrait, MediaBox[0 0 595 842]
tables = camelot.read_pdf("filename.pdf", table_areas=["0,842,595,0"])您可以通过Camelot的可视化调试特性找到该区域的大小,或者通过使用文本编辑器打开PDF并检查MediaBox或CropBox维度(注意,它们不使用相同的坐标约定)。
https://stackoverflow.com/questions/53209335
复制相似问题