Answers:
只是为了增加上述答案,特别是您可以使用xpdf-utils中的命令行工具pdftotext,然后使用grep搜索此工具创建的文本文档。
这可能看起来像这样:
pdftotext document.pdf - | grep -C5 -n -i "search term"
手册中有更多信息。pdftotext的唯一缺点是您不能让我们同时转换多个文件。可以使用一个小的bash脚本来解决此问题:
for f in pdf_directory; do echo $f; pdftotext $f - | grep -i "search_term"; done
如果由于例如不兼容的pdf文件而在从pdf创建文本文档时遇到问题,那么这是另一个问题。
我认为一般来说,PDF编辑器不包含命令行,因为它们是图形的。如果要使用bash(或zsh!),则可能必须使用终端外壳。
祝好运!
注意: xpdf-utils 是 poppler-utils 的过渡包。
您可以使用poppler-utils。poppler-utils是用于可移植文档格式(PDF)文件的工具套件。
要安装它,您可以使用Ubuntu软件中心,或单击下面的按钮:
pdfgrep
可以在目录树中递归搜索PDF文件中的字符串或模式,计算匹配项或为每个匹配项打印一些上下文。例如,递归搜索keyword
中/some directory
,不区分大小写:
pdfgrep -Ri keyword /some/directory
Pdfgrep是用于搜索PDF文件中的文本的工具。它的工作方式类似于`grep'。
特征:
- 搜索正则表达式。
- 支持一些重要的grep选项,包括:+文件名输出。+页码输出。+可选的不区分大小写。+计算
发生次数。- 最重要的功能:彩色输出!
1资料来源: Ubuntu Apps目录
pdftotext失败的原因可能是PDF是扫描的图像,您需要对其进行OCR,我写了一种快速的方法来搜索所有pdf
无法grep
编辑的s 并对其进行OCR。
我注意到,如果pdf
文件没有任何字体,通常是无法搜索的。知道这一点我们可以使用pdffonts
。
的前2行pdffonts
是表格标题,因此,当文件可搜索时,输出多于两行,因此我们可以创建:
gedit check_pdf_searchable.sh
贴上
#!/bin/bash
#set -vx
if ((`pdffonts "$1" | wc -l` < 3 )); then
echo $1
ocrmypdf "$1" "$1"_ocr.pdf
fi
然后使其可执行
chmod +x check_pdf_searchable.sh
然后在目录中列出所有不可搜索的pdf:
ls -1 ./*.pdf | xargs -L1 -I {} ./check_pdf_searchable.sh {}
或在目录及其子目录中:
tree -fai . | grep -P ".pdf$" | xargs -L1 -I {} ./check_pdf_searchable.sh {}
您还需要安装:
sudo apt install ocrmypdf