Python实现常用文本内容提取

 更新时间:2025年03月23日 15:26:24   作者:拥抱AI  
在日常工作和学习中,我们经常需要从PDF、Word文档中提取文本,本文将介绍如何使用Python编写一个文本内容提取工具,有需要的小伙伴可以参考下

一、引言

在日常工作和学习中,我们经常需要从PDF、Word文档中提取文本,例如为了数据分析和文本处理等。如果手动进行这些操作,不仅费时费力,而且容易出错。因此,编写一个文本内容提取变得尤为重要。本文将介绍如何使用Python编写一个文本内容提取,该工具可以从PDF、Word文档中提取文本。

二、文本内容提取的原理

文本内容提取的核心原理是遍历指定目录下的所有文件,根据文件类型(PDF或Word)使用相应的库提取文本,然后将提取的文本保存到指定目录。在这个过程中,我们需要考虑以下几个问题:

如何遍历指定目录下的所有文件?

如何根据文件类型提取文本?

如何保存提取的文本?

接下来,我们将分别介绍这三个问题的解决方案。

三、文本内容提取的设计

在设计文本内容提取时,我们需要考虑以下几个方面的内容:

用户界面:为了方便用户使用,我们可以设计一个简单的命令行界面,让用户可以输入目录、输出目录等参数。

文件遍历:我们需要编写一个文件遍历,用于遍历指定目录下的所有文件。

文本提取:我们需要编写一个文本提取,用于根据文件类型提取文本。

文本保存:我们需要编写一个文本保存,用于将提取的文本保存到指定目录。

四、文本内容提取的实现

接下来,我们将详细介绍文本内容提取的实现过程。为了方便起见,我们将使用Python编写这个工具。

1.用户界面

我们可以使用Python的argparse库来设计一个简单的命令行界面。界面包括以下几个部分:

目录参数:让用户指定需要提取文本的文件所在的目录。

输出目录参数:让用户指定提取的文本保存到的目录。

2.文件遍历

我们可以使用Python的os库来遍历指定目录下的所有文件。具体实现如下:

import os
def traverse_dir(dir_path):
    file_list = []
    for root, dirs, files in os.walk(dir_path):
        for file in files:
            file_list.append(os.path.join(root, file))
    return file_list

3.文本提取

对于PDF文件,我们可以使用Python的PyPDF2库来提取文本。具体实现如下:

import PyPDF2
def extract_text_from_pdf(pdf_path, output_path):
    with open(pdf_path, 'rb') as file:
        pdf_reader = PyPDF2.PdfFileReader(file)
        for page_num in range(pdf_reader.numPages):
            page = pdf_reader.getPage(page_num)
            text = page.extractText()
            with open(output_path, 'a', encoding='utf-8') as output_file:
                output_file.write(text)

对于Word文档,我们可以使用Python的python-docx库来提取文本。具体实现如下:

from docx import Document
def extract_text_from_docx(docx_path, output_path):
    doc = Document(docx_path)
    text = []
    for para in doc.paragraphs:
        text.append(para.text)
    with open(output_path, 'a', encoding='utf-8') as output_file:
        output_file.write('\n'.join(text))

4.文本保存

我们可以使用Python的os.path.join()函数来保存提取的文本。具体实现如下:

import os
def save_text(text, output_path):
    with open(output_path, 'w', encoding='utf-8') as output_file:
        output_file.write(text)

五、完整代码示例

import argparse
import os
import PyPDF2
from docx import Document
def traverse_dir(dir_path):
    file_list = []
    for root, dirs, files in os.walk(dir_path):
        for file in files:
            file_list.append(os.path.join(root, file))
    return file_list
def extract_text_from_pdf(pdf_path, output_path):
    with open(pdf_path, 'rb') as file:
        pdf_reader = PyPDF2.PdfFileReader(file)
        for page_num in range(pdf_reader.numPages):
            page = pdf_reader.getPage(page_num)
            text = page.extractText()
            with open(output_path, 'a', encoding='utf-8') as output_file:
                output_file.write(text)
def extract_text_from_docx(docx_path, output_path):
    doc = Document(docx_path)
    text = []
    for para in doc.paragraphs:
        text.append(para.text)
    with open(output_path, 'a', encoding='utf-8') as output_file:
        output_file.write('\n'.join(text))
def save_text(text, output_path):
    with open(output_path, 'w', encoding='utf-8') as output_file:
        output_file.write(text)
def main():
    parser = argparse.ArgumentParser(description="文本内容提取")
    parser.add_argument("directory", help="指定目录")
    parser.add_argument("output_directory", help="指定输出目录")
    args = parser.parse_args()
    dir_path = args.directory
    output_dir = args.output_directory
    file_list = traverse_dir(dir_path)
    for file_path in file_list:
        if file_path.lower().endswith(('.pdf')):
            extract_text_from_pdf(file_path, output_dir)
        elif file_path.lower().endswith(('.docx', '.doc')):
            extract_text_from_docx(file_path, output_dir)
if __name__ == "__main__":
    main()

以上就是Python实现常用文本内容提取的详细内容,更多关于Python文本内容提取的资料请关注脚本之家其它相关文章!

相关文章

  • Python导入oracle数据的方法

    Python导入oracle数据的方法

    这篇文章主要介绍了Python导入oracle数据的方法,涉及Python读取csv文件信息再插入到Oracle数据库的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • Python读入mnist二进制图像文件并显示实例

    Python读入mnist二进制图像文件并显示实例

    这篇文章主要介绍了Python读入mnist二进制图像文件并显示实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python cookbook(数据结构与算法)筛选及提取序列中元素的方法

    Python cookbook(数据结构与算法)筛选及提取序列中元素的方法

    这篇文章主要介绍了Python cookbook(数据结构与算法)筛选及提取序列中元素的方法,涉及Python列表推导式、生成器表达式及filter()函数相关使用技巧,需要的朋友可以参考下
    2018-03-03
  • Pyecharts 中Geo函数常用参数的用法说明

    Pyecharts 中Geo函数常用参数的用法说明

    这篇文章主要介绍了Pyecharts 中Geo函数常用参数的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • Python Pandas创建Dataframe数据框的六种方法汇总

    Python Pandas创建Dataframe数据框的六种方法汇总

    这篇文章主要介绍了Python中的Pandas创建Dataframe数据框的六种方法,创建Dataframe主要是使用pandas中的DataFrame函数,其核心就是第一个参数:data,传入原始数据,因此我们可以据此给出六种创建Dataframe的方法,需要的朋友可以参考下
    2023-05-05
  • python保存文件方法小结

    python保存文件方法小结

    这篇文章主要介绍了python保存文件方法小结,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07
  • 14 个Python小游戏 源码分享

    14 个Python小游戏 源码分享

    今天给大家带来14个py小游戏如:吃金币、打乒乓、滑雪、并夕夕版飞机大战、打地鼠、小恐龙、消消乐、俄罗斯方块、贪吃蛇、24点小游戏、平衡木、外星人入侵、贪心鸟、井字棋888‘’,文章都带了源码,感兴趣的小伙伴感快收藏起来吧
    2021-09-09
  • python 分离文件名和路径以及分离文件名和后缀的方法

    python 分离文件名和路径以及分离文件名和后缀的方法

    今天小编就为大家分享一篇python 分离文件名和路径以及分离文件名和后缀的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • Python wxPython库消息对话框MessageDialog用法示例

    Python wxPython库消息对话框MessageDialog用法示例

    这篇文章主要介绍了Python wxPython库消息对话框MessageDialog用法,结合实例形式简单分析了wxPython库的基本事件与相关使用技巧,需要的朋友可以参考下
    2018-09-09
  • python实现图像的随机增强变换

    python实现图像的随机增强变换

    这篇文章主要为大家介绍了如何利用pythons制作一个小工具工具,可以实现图像的随机增强变换,可用于分类训练数据的增强,有需要的可以参考下
    2024-11-11

最新评论