gpt4 book ai didi

pdf - 如何从命令行以CSV格式从PDF提取表数据?

转载 作者:行者123 更新时间:2023-12-03 15:20:18 25 4
gpt4 key购买 nike

我想从here中提取所有行,而忽略列标题以及所有页面标题,即Supported Devices

pdftotext -layout DAC06E7D1302B790429AF6E84696FCFAB20B.pdf - \
| sed '$d' \
| sed -r 's/ +/,/g; s/ //g' \
> output.csv

生成的文件应为CSV电子表格格式(逗号分隔的值字段)。

换句话说,我想改进上述命令,以使输出完全不会制动。有任何想法吗?

最佳答案

我也会为您提供另一种解决方案。

尽管在这种情况下pdftotext方法可以尽力而为,但是在某些情况下,并非每个页面都有相同的列宽(如您的良性PDF所示)。

在这里,不太知名但很酷的免费和开源软件 Tabula-Extractor 是最佳选择。

我本人正在使用直接GitHub checkout :

$ 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的截屏视频(您也可以 download 并借助 asciinema命令行工具在Linux / MacOSX / Unix终端中本地重播):

asciicast

关于pdf - 如何从命令行以CSV格式从PDF提取表数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30310416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com