Python Textract库:文本提取

98b933fb6a59ab271502d5468b4ce4d6.png

更多Python学习内容:ipengtao.com

Textract是一个强大的Python库,用于从各种文件格式中提取文本。无论是PDF、Word文档、Excel电子表格、HTML页面还是图像,Textract都能有效地提取其中的文本内容。Textract通过集成多种开源工具和库,实现了对多种文件格式的支持,使得文本提取变得简单而高效。本文将详细介绍Textract库的安装、主要功能、基本操作、高级功能及其实践应用,并提供丰富的示例代码。

安装

Textract库可以通过pip进行安装。确保Python环境已激活,然后在终端或命令提示符中运行以下命令:

pip install textract

此外,Textract依赖于一些第三方软件,如Tesseract、pdftotext等,具体依赖项取决于你要处理的文件类型。

可以通过以下命令安装这些依赖项:

在Ubuntu上:

sudo apt-get install -y poppler-utils tesseract-ocr

在MacOS上:

brew install tesseract poppler

主要功能

  1. 多种文件格式支持:支持PDF、DOC、DOCX、PPT、PPTX、XLS、XLSX、HTML、TXT、图像等多种文件格式的文本提取。

  2. 自动检测文件类型:能够自动检测文件类型,无需手动指定。

  3. OCR支持:集成Tesseract OCR引擎,支持从图像中提取文本。

  4. 编码处理:自动处理文件的字符编码问题。

基本操作

从PDF文件中提取文本

以下示例展示了如何使用Textract从PDF文件中提取文本:

import textract# 从PDF文件中提取文本
text = textract.process('example.pdf')# 打印提取的文本
print(text.decode('utf-8'))

从Word文档中提取文本

以下示例展示了如何使用Textract从Word文档中提取文本:

import textract# 从Word文档中提取文本
text = textract.process('example.docx')# 打印提取的文本
print(text.decode('utf-8'))

从Excel电子表格中提取文本

以下示例展示了如何使用Textract从Excel电子表格中提取文本:

import textract# 从Excel电子表格中提取文本
text = textract.process('example.xlsx')# 打印提取的文本
print(text.decode('utf-8'))

从HTML页面中提取文本

以下示例展示了如何使用Textract从HTML页面中提取文本:

import textract# 从HTML页面中提取文本
text = textract.process('example.html')# 打印提取的文本
print(text.decode('utf-8'))

从图像中提取文本

以下示例展示了如何使用Textract从图像中提取文本:

import textract# 从图像中提取文本
text = textract.process('example.png')# 打印提取的文本
print(text.decode('utf-8'))

高级功能

自定义OCR引擎

Textract默认使用Tesseract作为OCR引擎。

以下示例展示了如何自定义OCR引擎的参数:

import textract# 使用自定义参数提取图像中的文本
text = textract.process('example.png', method='tesseract', language='eng')# 打印提取的文本
print(text.decode('utf-8'))

处理多页PDF

Textract能够处理多页PDF文件,并将所有页面的文本提取出来。

以下示例展示了如何处理多页PDF:

import textract# 从多页PDF文件中提取文本
text = textract.process('multipage_example.pdf')# 打印提取的文本
print(text.decode('utf-8'))

处理编码问题

Textract能够自动处理文件的字符编码问题,但有时需要手动指定编码。

以下示例展示了如何处理编码问题:

import textract# 从文件中提取文本,并指定编码
text = textract.process('example.txt', encoding='utf-8')# 打印提取的文本
print(text.decode('utf-8'))

处理扫描件PDF

对于扫描件PDF,Textract同样可以通过OCR技术提取文本。

以下示例展示了如何处理扫描件PDF:

import textract# 从扫描件PDF中提取文本
text = textract.process('scanned_example.pdf', method='tesseract', language='eng')# 打印提取的文本
print(text.decode('utf-8'))

实践应用

批量处理文件

以下示例展示了如何使用Textract批量处理多个文件,并将提取的文本保存到新的文本文件中:

import textract
import os# 定义输入和输出目录
input_dir = 'documents'
output_dir = 'extracted_texts'# 确保输出目录存在
os.makedirs(output_dir, exist_ok=True)# 获取输入目录中的所有文件
files = os.listdir(input_dir)# 批量处理文件
for file in files:input_file = os.path.join(input_dir, file)output_file = os.path.join(output_dir, os.path.splitext(file)[0] + '.txt')# 提取文本text = textract.process(input_file)# 保存提取的文本with open(output_file, 'w', encoding='utf-8') as f:f.write(text.decode('utf-8'))print("所有文件处理完成")

创建搜索引擎

以下示例展示了如何使用Textract提取文档中的文本,并创建一个简单的搜索引擎:

import textract
import os
from whoosh.index import create_in
from whoosh.fields import Schema, TEXT
from whoosh.qparser import QueryParser# 定义输入目录
input_dir = 'documents'# 定义Whoosh索引的Schema
schema = Schema(title=TEXT(stored=True), content=TEXT)# 创建索引目录
if not os.path.exists("indexdir"):os.mkdir("indexdir")# 创建索引
ix = create_in("indexdir", schema)# 获取输入目录中的所有文件
files = os.listdir(input_dir)# 提取文本并添加到索引
writer = ix.writer()
for file in files:input_file = os.path.join(input_dir, file)text = textract.process(input_file)writer.add_document(title=file, content=text.decode('utf-8'))
writer.commit()# 创建搜索功能
def search(query_str):with ix.searcher() as searcher:query = QueryParser("content", ix.schema).parse(query_str)results = searcher.search(query)for result in results:print(result['title'])# 测试搜索功能
search("your search query")

分析法律文档

以下示例展示了如何使用Textract提取法律文档中的文本,并进行基本的文本分析:

import textract
import nltk
from nltk.tokenize import word_tokenize
from nltk.probability import FreqDist# 下载必要的NLTK数据
nltk.download('punkt')# 提取文本
text = textract.process('legal_document.pdf')
text = text.decode('utf-8')# 分词
tokens = word_tokenize(text)# 计算词频
freq_dist = FreqDist(tokens)# 打印最常见的10个词
print(freq_dist.most_common(10))

总结

Textract库为Python开发者提供了一个功能强大且灵活的工具,用于从各种文件格式中提取文本。通过其简洁的API和丰富的功能,用户可以轻松进行PDF、Word、Excel、HTML、图像等文件的文本提取,并在各种应用场景中发挥作用。无论是批量处理文件、创建搜索引擎还是进行文本分析,Textract都能提供强大的支持和便利。本文详细介绍了Textract库的安装、主要功能、基本操作、高级功能及其实践应用,并提供了丰富的示例代码。希望在实际项目中能够充分利用Textract库,提高文本提取和处理的效率和准确性。

如果你觉得文章还不错,请大家 点赞、分享、留言 ,因为这将是我持续输出更多优质文章的最强动力!

更多Python学习内容:ipengtao.com


如果想要系统学习Python、Python问题咨询,或者考虑做一些工作以外的副业,都可以扫描二维码添加微信,围观朋友圈一起交流学习。

5783a4cdce7a4312cd46f13bdb5e71f7.gif

我们还为大家准备了Python资料和副业项目合集,感兴趣的小伙伴快来找我领取一起交流学习哦!

f72fb7b1f7e6ba403dd17a7b516cf6d5.jpeg

往期推荐

Python 中的 iter() 函数:迭代器的生成工具

Python 中的 isinstance() 函数:类型检查的利器

Python 中的 sorted() 函数:排序的利器

Python 中的 hash() 函数:哈希值的奥秘

Python 中的 slice() 函数:切片的利器

Python 的 tuple() 函数:创建不可变序列

点击下方“阅读原文”查看更多

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/30646.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

opencascade AIS_InteractiveContext源码学习1 object display management 对象显示管理

AIS_InteractiveContext 前言 交互上下文(Interactive Context)允许您在一个或多个视图器中管理交互对象的图形行为和选择。类方法使这一操作非常透明。需要记住的是,对于已经被交互上下文识别的交互对象,必须使用上下文方法进行…

centOS Stream9配置NAT8网络

首先将VMware关机,添加网络适配器 启动虚拟机,查看ens192是否打开连接 安装的图形化需要查看右上角电源处网卡是否连接 最小化安装一般不会出现未连接的状态 使用ip a 查看 配置网卡文件 cd /etc/NetworkManager/system-connections/cd到当前目录下…

7-Zip

最牛掰的解压缩的开源软件!赏!!!! 概述 7-Zip 是一款免费开源的文件归档和压缩软件,由于其高压缩比和支持多种格式等优势,越来越受到用户的青睐。7-Zip 最初由一位俄罗斯程序员开发&#xff0c…

在 Visual Studio 2022 (Visual C++ 17) 中使用 Visual Leak Detector

在 Visual C 2022 中使用 Visual Leak Detector 1 问题描述1.1 内存泄漏的困扰和解决之道1.2 内存泄漏检测工具的选择1.3 VLD的现状 2 安装和设置VLD的环境变量2.1 安装VLD文件2.2 VLD安装后的目录和文件说明2.2.1 include子目录说明2.2.2 lib子目录说明2.2.2.1 目录整理 2.2.3…

uniapp app一键登录

一键登录不需要单独写页面,uniapp 有原生的页面 第一步,登录Dcloud后台》我的应用》点击应用名称 填写完点击 uniCloud模块新建一个服务空间》选择免费 , 创建完点击一键登录,添加应用,这个需要审核,“大概一天左右”…

DevOps开发工程师在软件产品发版流程中的角色与工作

目录 引言 一、需求分析阶段 1.1 协助需求收集与分析 1.2 制定环境需求 二、开发阶段 2.1 搭建开发环境 2.2 自动化构建 2.3 代码质量检查 三、测试阶段 3.1 自动化测试 3.2 测试报告生成 3.3 性能测试与监控 四、部署阶段 4.1 部署策略制定 4.2 部署自动化 4.3…

ORM框架SQLAlchemy

ORM框架SQLAlchemy 目录 ORM框架SQLAlchemy介绍安装架构连接数据库1. PostgreSQL2. MySQL3. Oracle4. Microsoft SQL Server5. SQLite 创建连接池原生Python操作数据库SQLAlchemy的ORM操作创建表外键字段的创建一对多多对多 ORM操作增删改查查询添加删除修改 介绍 sqlalchemy是…

帝国CMS二次开发H5手游如何让同一个url 不同的模板

帝国CMS在二次开发《72游戏网》的时候,H5手游如何让同一个url 不同的模板 比如:www.72yy.com/you/11935.html 是H5游戏宣传页 由于很多H5游戏和网页游戏都是需要使用iframe来嵌套使用的 利于自己网站SEO收录优化 那么就再复制一套程序 用二级目录或者二…

三菱汽车常用油封类型

油封的功能 油封在防止润滑剂泄漏和污染物进入方面起着关键作用,从而确保各种机械部件的顺利运行。它们存在于发动机、变速箱和差速器等关键部位。本文概述了三菱汽车常用的油封类型,详细介绍了它们的应用及其带来的好处。 一、三菱汽车的主要油封类型…

一种基于非线性滤波过程的旋转机械故障诊断方法(MATLAB)

在众多的旋转机械故障诊断方法中,包络分析,又称为共振解调技术,是目前应用最为成功的方法之一。首先,对激励引起的共振频带进行带通滤波,然后对滤波信号进行包络谱分析,通过识别包络谱中的故障相关的特征频…

【Linux基础IO】重定向以及原理分析

我们先来看下面一个情况&#xff1a; #include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #define filename "text.txt"int main(){close(1);//关…

[Linux] 系统管理

全局配置文件 用户个性化配置 配置文件的种类 alias命令和unalias命令 进程管理 进程表

使用Docker在Mac上部署OnlyOffice,预览编辑word、excel、ppt非常好

前端编辑word、ppt文档&#xff0c;开源免费方案并没有找到合适的&#xff0c;像wps、石墨文档都是自研的方案。实现过程中wps采用的svg方案&#xff0c;而石墨文档采用的是canvas&#xff0c;它们均是自己来实现编辑器&#xff0c;不依赖浏览器提供的编辑器&#xff08;conten…

嵌入式Linux:Linux系统中文件类型

目录 1、普通文件 2、目录文件 3、字符设备文件 4、块设备文件 5、符号链接文件 6、套接字文件 7、管道文件 8、stat命令和ls命令 8.1、stat命令 8.2、ls命令 9、stat、fstat、lstat函数 9.1、stat函数 9.2、fstat函数 9.3、lstat函数 在Windows系统中&#xff0…

【Python】已完美解决:(Python键盘中断报错问题) KeyboardInterrupt

文章目录 一、问题背景二、可能出错的原因三、错误代码示例四、正确代码示例&#xff08;结合实战场景&#xff09;五、注意事项 已解决&#xff1a;Python中处理KeyboardInterrupt&#xff08;键盘中断&#xff09;报错问题 一、问题背景 在Python编程中&#xff0c;当我们运…

Java | Leetcode Java题解之第167题两数之和II-输入有序数组

题目&#xff1a; 题解&#xff1a; class Solution {public int[] twoSum(int[] numbers, int target) {int low 0, high numbers.length - 1;while (low < high) {int sum numbers[low] numbers[high];if (sum target) {return new int[]{low 1, high 1};} else i…

「前端+鸿蒙」鸿蒙应用开发-组件状态管理

在鸿蒙应用开发中,组件状态管理是确保UI与数据同步更新的重要概念。状态(State)是组件内部数据的集合,它可以影响组件的渲染输出。以下是组件状态管理的入门、深入和实战介绍,以及示例代码。 组件状态管理 - 入门 入门阶段,你需要了解状态是什么以及如何使用状态来更新U…

人工智能指数报告

2024人工智能指数报告&#xff08;一&#xff09;&#xff1a;研发 前言 全面分析人工智能的发展现状。 从2017年开始&#xff0c;斯坦福大学人工智能研究所&#xff08;HAI&#xff09;每年都会发布一份人工智能的研究报告&#xff0c;人工智能指数报告&#xff08;AII&…

数据结构:快速排序,归并排序,计数排序的实现分析

✨✨小新课堂开课了&#xff0c;欢迎欢迎~✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;数据结构与算法 小新的主页&#xff1a;编程版小新-CSDN博客 1.快排 1.1算法思想 选择一个基准元素&#xff0c;…

【OpenHarmony4.1 之 U-Boot 2024.07源码深度解析】008 - make distclean 命令解析

【OpenHarmony4.1 之 U-Boot 2024.07源码深度解析】008 - make distclean 命令解析 一、make V=1 distclean 命令解析系列文章汇总:《【OpenHarmony4.1 之 U-Boot 源码深度解析】000 - 文章链接汇总》 本文链接:《【OpenHarmony4.1 之 U-Boot 2024.07源码深度解析】008 - mak…