convertPDF.py#!/usr/bin/env python3"""Script to convert PDFs to text files."""importunicodedata, os, pdf2txt, datetimeimport multiprocessingdef convertPDFToText(i, ID, newDir, fileNamePDF):print('Trying to convert: ' + str(i) + ', ' + ID)# 输出正在尝试转换的文件信息try:pdf2txt.main(['-o', newDir + '/' + ID + '.txt', fileNamePDF])# 调用pdf2txt.main来转换PDF为文本print('Successfully converted: ' + ID)# 转换成功时的输出except Exception as e:print('Failed to convert: ' + ID + f', Error: {e}')# 转换失败时的输出def process_pdfs(pdf_list):with multiprocessing.Pool(20) as pool:# 创建一个包含20个进程的进程池pool.starmap(convertPDFToText, pdf_list)# 使用starmap来并行处理pdf_list中的每个元素,每个元素都是一个元组,它将被解包为convertPDFToText的参数if __name__ == '__main__':directory = '../../Data/PDF/work'os.chdir(directory)# 更改当前工作目录至PDF文件目录# 指定保存转换后文件的目录newDir = '../TXT/work'# os.makedirs(newDir)# 创建新目录(如果需要的话)print('Placing converted files in: ' + newDir)# 输出转换后文件将被放置的目录pdf_list = []# 创建一个空列表,用于保存将传递给convertPDFToText的参数元组i = 0# 初始化计数器for fileNamePDF in os.listdir('./'):# 遍历当前目录中的所有文件i += 1# 计数器递增if fileNamePDF.find(".pdf") == -1:# 如果文件不是PDF , 跳过continueID = fileNamePDF[:-4]# 从文件名中获取ID(去掉.pdf后缀)if os.path.isfile('../TXT/' + ID + '.txt'):# 如果已经存在对应的文本文件,跳过continuepdf_list.Append((i, ID, newDir, fileNamePDF))# 将参数元组添加到pdf_list中process_pdfs(pdf_list)# 调用process_pdfs函数,传递pdf_list以并行处理PDF文件
【使用Python进行文本分析-将PDF文件多进程批量处理为csv文件】
推荐阅读
- 深入了解Python数据类型及应用
- 使用 Java 枚举和自定义数据类型
- C++异常处理:如何使用try、catch、throw
- 轻松玩转Python,五个步骤打造惊艳的折线图
- 掌握Python的解包技巧:*和**的最全用法
- 避免Python乱码陷阱:字符编码详解
- 从零到SQL注入防护大师,打造安全的Python应用程序
- 使用Docker Compose搭建高可用Redis集群
- 如何在户外进行有效的慢跑
- 如何使用万用表,佳诚万用表的使用方法
