MENU

烘焙 - 计算机 - 撸串

这就是我生活的全部 \/n \/n \/n

案例:使用Pdfplumber+Camelot解提取年报中的表格数据

很多朋友会问,pdfplumber也能解析表格,为什么还要使用Camelot呢?这因为年报中的表格很多都是一个单元格中有多个换行,像这样:
多行.jpg
pp的解析结果是每个换行都是表格中的一样,这很难提取出准确的数据。
相对于多换行,这样的pdfplumber就能正常解析:
QQ截图20210427172430.png

面对这一问题,使用Camelot的stream模式就能好解决,但是有个遗憾,就是它无法提取全文的字符串,只能提取表格,和所有与表格相关的元素。所以需要结合pdfplumber,通过pp来解决查找关键词。





Read More

使用Python3+Camelot+Pdfplumber+Centos8 解析pdf表格过程中的问题

环境:
系统:Centos8 Python3版本:3.9.2 Camelot-py库的版本:0.57

在Centos8环境下遇到的问题

  • Centos下运行程序报错ModuleNotFoundError: No module named '_sqlite3'

报这个错误的原因是Centos没有安装sqlite-devel库

dnf install sqlite-devel

安装后运行程序发现让然报错。后来发现sqlite-devel需要在编译python之前安装,那么好吧,接下来重新编译python3

cd /usr/local/lib/python3.x
.configure --prefix=/usr/local/lib/
make&make install

再次运行程序,就不会出现报错了~


  • Centos下运行程序报错ModuleNotFoundError: No module named '_bz2'

出现这种错误的原因一般是由于python3的lib-dynload中缺少 _bz2.cpython-38-x86_64-linux-gnu.so这个动态链接库
造成这种情况很有可能是:后期在系统中安装了其他或更高的python版本所导致。解决办法就是将系统中原有的那个python链接库复制到新版本的里面来就可以。那么开始操作。(没有的可以下载我这个~)
_bz2.cpython-36m-x86_64-linux-gnu.so
将这个so文件放入/usr/local/lib/python3.x/lib-dynload/文件夹下,并改名为_bz2.cpython-3[Xm]-x86_64-linux-gnu.so
这里注意中括号里的变量X和m字符,X表示你的python版本,m的意思是:3.9以下版本必须添加m,3.9及以上版本无需m。
如果使用的是我的文件,请设置好执行权限

chmod +x _bz2.cpython-39-x86_64-linux-gnu.so

接下来运行程序,已无报错!

到目前为止,由于Centos8环境所造成的问题,只发现这2个,后续出现还会更新~







Read More

linux CentOS8 安装Ghostscript

最近在研究使用Camelout解析PDF表格。Camelot有点像selenium那样会驱动浏览器,只不过Camelot驱动的是Ghostscript。
那么Ghostscript又是什么呢,下面点解了解一下:

Ghostscript是一套建基于Adobe、PostScript及可移植文档格式(PDF)的页面描述语言等而编译成的免费软件。

进入正题 - linux CentOS8 安装Ghostscript


Read More