如何仅使用 Python 标准库的二进制数据从 PDF 中读取文本
How to read text from a PDF using only the binary data with only Python's standard library
我想了解 PDF 文件的整体结构。首先,我想知道如何仅使用 Python 的标准库来解析 PDF 中包含的文本。我在这里找到了一个关于 PDF 文件结构的好资源,但现在,它超出了我的范围:PDF Documentation
为了练习,我创建了一个仅包含文本“Hello World”的 PDF,如下图所示。
如何仅从 pdf 的二进制数据中找到它?从这里开始:
with open('Hello World.pdf', 'rb') as f:
data = f.read()
如何找到“Hello World”文本?我希望我能在这里包含数据,但是字符太多了。
您可能想尝试 PyPDF2 或 tika 等库
from tika import parser # pip install tika
raw = parser.from_file('hello_world.pdf')
print(raw['content'])
更多信息请查看此处How to extract text from a PDF file?
在您询问如何轻松构建和分析基本 PDF 的评论中,我在其他地方使用了一种简单的输入技术来构建示例,但由于最近删除了该答案,所以我在这里重复一遍!
它包含一张 A4 图像(595 像素宽),因此请忽略第一个 %Set
块。
%% is a global definition
% is a comment
0,0 is page bottom Left (x,y)
一个Page.Txt(与图片不完全一样,因为我现在更正了专有名称:-)
%%MediaBox 0 0 595 842
%%Font Helv Helvetica
%%Image I0 background.png
% Set the Background image.
q
595 0 0 842 0 0 cm
/I0 Do
Q
% Add text.
q
0 0 1 rg
BT /Helv 18 Tf 50 805 Td (Hello, World!) Tj ET
BT /Helv 18 Tf 50 777 Td (Hello, Moon!) Tj ET
Q
运行 Artifex MuPDF MuTool(跨平台 AGPL)
> mutool create -o sample.pdf Page.Txt
您对我如何提取生成的 PDF 的确切内容更感兴趣。记住 PDF 的任何提取,只是意味着对象是前文件内容的 重新表达 它们可能是无序的,它不是分析也不是逆向工程,它是重新成像。
对于该任务,我在 Windows 上使用 MuPDF-GL.exe 打开文件并使用 A 保存新 PDF
- 删除了加密并且
- 将输出切换为 Pretty print + Ascii(又称纯文本),然后另存为基于新文本的 PDF
我想了解 PDF 文件的整体结构。首先,我想知道如何仅使用 Python 的标准库来解析 PDF 中包含的文本。我在这里找到了一个关于 PDF 文件结构的好资源,但现在,它超出了我的范围:PDF Documentation
为了练习,我创建了一个仅包含文本“Hello World”的 PDF,如下图所示。
如何仅从 pdf 的二进制数据中找到它?从这里开始:
with open('Hello World.pdf', 'rb') as f:
data = f.read()
如何找到“Hello World”文本?我希望我能在这里包含数据,但是字符太多了。
您可能想尝试 PyPDF2 或 tika 等库
from tika import parser # pip install tika
raw = parser.from_file('hello_world.pdf')
print(raw['content'])
更多信息请查看此处How to extract text from a PDF file?
在您询问如何轻松构建和分析基本 PDF 的评论中,我在其他地方使用了一种简单的输入技术来构建示例,但由于最近删除了该答案,所以我在这里重复一遍!
它包含一张 A4 图像(595 像素宽),因此请忽略第一个 %Set
块。
%% is a global definition
% is a comment
0,0 is page bottom Left (x,y)
一个Page.Txt(与图片不完全一样,因为我现在更正了专有名称:-)
%%MediaBox 0 0 595 842
%%Font Helv Helvetica
%%Image I0 background.png
% Set the Background image.
q
595 0 0 842 0 0 cm
/I0 Do
Q
% Add text.
q
0 0 1 rg
BT /Helv 18 Tf 50 805 Td (Hello, World!) Tj ET
BT /Helv 18 Tf 50 777 Td (Hello, Moon!) Tj ET
Q
运行 Artifex MuPDF MuTool(跨平台 AGPL)
> mutool create -o sample.pdf Page.Txt
您对我如何提取生成的 PDF 的确切内容更感兴趣。记住 PDF 的任何提取,只是意味着对象是前文件内容的 重新表达 它们可能是无序的,它不是分析也不是逆向工程,它是重新成像。
对于该任务,我在 Windows 上使用 MuPDF-GL.exe 打开文件并使用 A 保存新 PDF
- 删除了加密并且
- 将输出切换为 Pretty print + Ascii(又称纯文本),然后另存为基于新文本的 PDF