Python实现快速从指定页面PDF中提取文本
<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">1. 环境准备</a></li><li><a href="#_label1">2. 从指定页面提取文本</a></li><ul class="second_class_ul"><li><a href="#_lab2_1_0">2.1 代码示例</a></li><li><a href="#_lab2_1_1">2.2 代码解析</a></li></ul><li><a href="#_label2">3. 从指定区域提取文本</a></li><ul class="second_class_ul"><li><a href="#_lab2_2_2">3.1 代码示例</a></li><li><a href="#_lab2_2_3">3.2 代码解析</a></li></ul><li><a href="#_label3">结论</a></li><ul class="second_class_ul"></ul></ul></div><p>在现代办公环境中,PDF 文件作为一种通用的文档格式被广泛使用。无论是合同、报告还是电子书,很多重要信息都储存于 PDF 文件中。因此,从 PDF 文件中提取文本数据的需求也逐渐增加。本文将为大家介绍如何使用 Spire.PDF for Python 来实现这一功能,具体包括从某一页和从指定区域提取文本。</p><p class="maodian"><a name="_label0"></a></p><h2>1. 环境准备</h2>
<p>首先,确保你已经安装了 Python 和 Spire.PDF 的相关库。你可以通过以下命令安装 Spire.PDF:</p>
<div class="jb51code"><pre class="brush:bash;">pip install Spire.PDF
</pre></div>
<p class="maodian"><a name="_label1"></a></p><h2>2. 从指定页面提取文本</h2>
<p class="maodian"><a name="_lab2_1_0"></a></p><h3>2.1 代码示例</h3>
<p>以下代码展示了如何从 PDF 文档中的特定页(例如第2页)提取文本:</p>
<div class="jb51code"><pre class="brush:py;">from spire.pdf.common import *
from spire.pdf import *
# 创建一个 PdfDocument 对象
doc = PdfDocument()
# 加载 PDF 文档
doc.LoadFromFile('C:/Users/Administrator/Desktop/Terms of service.pdf')
# 创建 PdfTextExtractOptions 对象并启用全文本提取
extractOptions = PdfTextExtractOptions()
# 提取所有文本,包括空格
extractOptions.IsExtractAllText = True
# 获取特定的页面(例如,第2页)
page = doc.Pages.get_Item(1)
# 创建 PdfTextExtractor 对象
textExtractor = PdfTextExtractor(page)
# 从页面中提取文本
text = textExtractor.ExtractText(extractOptions)
# 使用 UTF-8 编码将提取的文本写入文件
withopen('output/TextOfPage.txt', 'w', encoding='utf-8') as file:
file.write(text)
</pre></div>
<p class="maodian"><a name="_lab2_1_1"></a></p><h3>2.2 代码解析</h3>
<ul><li><strong>创建 </strong><code>PdfDocument</code><strong> 对象</strong> :这一步是加载 PDF 文件的第一步。</li><li><strong>加载 PDF 文档</strong> :使用指定路径加载你要处理的 PDF 文件。</li><li><strong>配置提取选项</strong> :通过设置 <code>IsExtractAllText</code> 为 True,确保提取所有文本,包括空格。</li><li><strong>获取特定页面</strong> :<code>doc.Pages.get_Item(1)</code> 获取的是 PDF 的第二页(索引从0开始)。</li><li><strong>创建文本提取器并提取文本</strong> :使用 <code>PdfTextExtractor</code> 对象来提取文本。</li><li><strong>将提取的文本保存为文件</strong> :最终将文本内容保存到指定路径的文件中。</li></ul>
<p class="maodian"><a name="_label2"></a></p><h2>3. 从指定区域提取文本</h2>
<p>有时候,仅提取 PDF 中的某一特定区域的文本更加有效。这可以通过定义一个矩形区域来实现。</p>
<p class="maodian"><a name="_lab2_2_2"></a></p><h3>3.1 代码示例</h3>
<p>以下代码将展示如何从 PDF 的指定区域提取文本:</p>
<div class="jb51code"><pre class="brush:py;">from spire.pdf.common import *
from spire.pdf import *
# 创建一个 PdfDocument 对象
doc = PdfDocument()
# 加载 PDF 文档
doc.LoadFromFile('C:/Users/Administrator/Desktop/Terms of service.pdf')
# 获取特定的页面(例如,第2页)
page = doc.Pages.get_Item(1)
# 创建 PdfTextExtractor 对象
textExtractor = PdfTextExtractor(page)
# 创建 PdfTextExtractOptions 对象
extractOptions = PdfTextExtractOptions()
# 定义提取的矩形区域
# RectangleF(left, top, width, height)
extractOptions.ExtractArea = RectangleF(0.0, 100.0, 890.0, 80.0)
# 从指定区域提取文本,保留空格
text = textExtractor.ExtractText(extractOptions)
# 使用 UTF-8 编码将提取的文本写入文件
withopen('output/TextOfRectangle.txt', 'w', encoding='utf-8') as file:
file.write(text)
</pre></div>
<p class="maodian"><a name="_lab2_2_3"></a></p><h3>3.2 代码解析</h3>
<ul><li><strong>加载 PDF 文件</strong> :与之前相同,首先加载 PDF 文档。</li><li><strong>获取特定页面</strong> :依然使用 <code>doc.Pages.get_Item(1)</code> 来获取第2页。</li><li><strong>定义提取区域</strong> :通过 <code>RectangleF</code> 类来定义一个矩形区域,该区域的左上角坐标为 <code>(0, 100)</code>,宽度为 <code>890</code>,高度为 <code>80</code>。</li><li><strong>执行文本提取</strong> :然后使用 <code>ExtractText</code> 方法从指定区域提取文本。</li><li><strong>保存文本</strong> :最后,提取的文本同样保存为 UTF-8 编码的文件。</li></ul>
<p class="maodian"><a name="_label3"></a></p><h2>结论</h2>
<p>通过以上方法,我们可以方便地从 PDF 文档中提取所需的文本信息。Spire.PDF for Python 提供的 API 简洁高效,能够满足多种文本提取需求。不论是从全页提取还是从特定区域提取,在实际工作中都能显著提高效率,尤其对于需要处理大量 PDF 文件的场合,使用此工具将使你事半功倍。</p>
頁:
[1]