
目录
一、使用pdfgrep来提取文本
二、使用pdfplumber来提取文本
三、改善问题
总结
前言
不用打开pdf文件,在Linux终端下可用pdfgrep或python3编程来提取文本。
存在问题:双栏的文本仍按单行提取,尚未自动生成单栏排版。
一、使用pdfgrep来提取文本
功能:命令行工具,用来查找pdf中文本。详见官网。
pdfgrep -n 'Pdf*' file.pdf|grep -v 'pdf file'
解释: 查找file.pdf中含'Pdf*'的行,但不包括‘pdf file'的行,同时给出所在页码。
二、使用pdfplumber来提取文本安装:pip3 install pdfplumber
WARNING: The script pdfplumber is installed in '~/.local/bin' which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
出现上述信息后,需要执行:
In "~/.bashrc": export PYTHonPATH=
source ~/.bashrc
这样pdfplumber才可在python中调用。
下面是提取文本的程序,python3版下运行:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import pdfplumber
with pdfplumber.open("./test.pdf") as pdf:
for page in pdf.pages: # for all pages.
print(page.extract_text(x_tolerance=1)) # get all txt on current page; "None" for no content.
print(page.extract_tables()) # get tables on current page; If no table, output "[]"; otherwise, "[[[row1],[row2]...],[[row1],[row2]...]...]"
# get every table
for table in page.extract_tables():
print(table) # [[row1],[row2]...]
# for every row data
for row in table:
print(row) # ['xxx','xxx'...]
# one split line per page.
print('---------- Split Page line ----------')
# first_page = pdf.pages[0]
# print(first_page.chars[0])
将来改进:分割线可用“第*页”来标明。
存在问题:有时出现单词之间没有空格,全部连接在一起,需调节x_tolerance参数值。
三、改善问题这个留待将来完善。
总结
pdfgrep 文本提取展现较 pdfplumber 要整齐。若直接简单看下结果,推荐使用前者。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)