Предлагаю и другое решение.
Хотя в этом случае метод 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.
Первые десять (из 8727) строк CVS выглядят так:
$ 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-файле выглядят так:
![Снимок экрана сверху первой страницы образца PDF](https://i.stack.imgur.com/7aiPU.png)
У него даже есть эти строки на последней странице, 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 следующим образом:
![последняя страница образца PDF](https://i.stack.imgur.com/sTKHB.png)
TabulaPDF и Tabula-Extractor действительно хороши для такой работы!
Обновлять
Вот скринкаст ASCiinema (который вы также можете скачать и повторно играть локально в вашем терминале Linux / MacOSX / Unix с помощью asciinema
инструмента командной строки), помечая tabula-extractor
:
а>
person
Kurt Pfeifle
schedule
18.05.2015