我也会为您提供另一种解决方案。
虽然在这种情况下,该pdftotext
方法可以通过合理的努力工作,但在某些情况下,并非每个页面都具有相同的列宽(如您相当良性的 PDF 所示)。
在这里,不那么知名但非常酷的免费和开源软件Tabula-Extractor
是最佳选择。
我自己正在使用直接 GitHub 结帐:
$ cd $HOME ; mkdir svn-stuff ; cd svn-stuff
$ git clone https://github.com/tabulapdf/tabula-extractor.git git.tabula-extractor
我给自己写了一个非常简单的包装脚本,如下所示:
$ cat ~/bin/tabulaextr
#!/bin/bash
cd ${HOME}/svn-stuff/git.tabula-extractor/bin
./tabula $@
既然~/bin/
在我的$PATH
,我就跑
$ tabulaextr --pages all \
$(pwd)/DAC06E7D1302B790429AF6E84696FCFAB20B.pdf \
| tee my.csv
从所有页面中提取所有表格并将它们转换为单个 CSV 文件。
CVS 的前十行(总共 8727 行)如下所示:
$ head DAC06E7D1302B790429AF6E84696FCFAB20B.csv
Retail Branding,Marketing Name,Device,Model
"","",AD681H,Smartfren Andromax AD681H
"","",FJL21,FJL21
"","",Luno,Luno
"","",T31,Panasonic T31
"","",hws7721g,MediaPad 7 Youth 2
3Q,OC1020A,OC1020A,OC1020A
7Eleven,IN265,IN265,IN265
A.O.I. ELECTRONICS FACTORY,A.O.I.,TR10CS1_11,TR10CS1
AG Mobile,Status,Status,Status
在原始 PDF 中看起来像这样:

它甚至在最后一页 293 上得到了这些行,对:
nabi,"nabi Big Tab HD\xe2\x84\xa2 20""",DMTAB-NV20A,DMTAB-NV20A
nabi,"nabi Big Tab HD\xe2\x84\xa2 24""",DMTAB-NV24A,DMTAB-NV24A
在 PDF 页面上看起来像这样:

TabulaPDF 和 Tabula-Extractor 非常非常适合这样的工作!
更新
这是一个 ASCIinema 截屏视频(您也可以借助命令行工具在 Linux/MacOSX/Unix 终端本地下载asciinema
和重播),主演tabula-extractor
:
