国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

使用Python進行文本分析-將PDF文件多進程批量處理為csv文件

開發 前端
在文本分析的過程中,將原始數據轉換為TXT文件非常關鍵,主要出于以幾個方面的考慮.

在文本分析的過程中,將原始數據轉換為TXT文件非常關鍵,主要出于以下幾個方面的考慮:

1.格式簡單與統一:

  • TXT文件是一種簡單的文本格式,只包含純文本信息,不包含任何格式或樣式信息。這種簡單和統一的格式有助于減少在文本分析過程中可能出現的混淆或誤解。
  • 其他格式的文檔,如PDF或Word文檔,可能包含圖像、表格和其他非文本元素,還可能包含復雜的格式和樣式,這些都可能干擾文本分析的過程。

2. 便于文本預處理:

  • ? 文本分析通常需要對文本數據進行預處理,包括分詞、去停用詞、標準化等。TXT文件的簡單結構使得這些預處理任務更容易執行。

  • ? 與其他文件格式相比,TXT文件不包含任何復雜的格式或元數據,這有助于簡化預處理步驟,減少可能出現的錯誤和問題。

3.兼容性:

  • ? 大多數文本分析和自然語言處理(NLP)工具都能夠直接處理TXT文件。將原始數據轉換為TXT文件可以確保與這些工具的兼容性,從而簡化分析流程。

  • ? TXT文件是一種通用的文件格式,可以在不同的操作系統和軟件環境中輕松處理,而不需要特定的轉換或適配器。

4.節省資源:

  • ? TXT文件通常比其他文件格式更小,這有助于節省存儲空間和提高處理速度。較小的文件大小也意味著需要較少的計算資源來處理文本數據,從而提高分析效率。

  • ? 簡單的文本格式也意味著在處理時CPU和內存的消耗較低,這對于大規模文本分析任務來說是非常重要的。

5.便于文本挖掘和模式識別:

  • ? 純文本格式使得使用正則表達式和其他文本挖掘技術來識別和提取文本中的模式變得更為容易和直接。

  • ? 純文本數據也便于實現各種文本分析技術,如情感分析、主題建模和實體識別等。

6.可讀性和可檢查性:

  • ? 人類可以直接讀取和理解TXT文件,這對于檢查、調試和理解文本分析的結果非常重要。

7.數據清洗:

  • ? TXT文件的簡單性使得更容易識別和處理缺失值、錯誤和其他數據質量問題,從而保證文本分析的準確性和可靠性。

將原始數據轉換為TXT文件是實現有效和準確文本分析的一個基本步驟,它幫助簡化和標準化文本分析流程,從而提高分析的效率和質量。以下代碼可以用來將pdf文件轉換為txt文件。

pdf2txt.py

#!/usr/bin/env python  # 該行命令告訴操作系統使用 Python 解釋器執行此文件
import sys  # 導入sys模塊,用于處理與Python解釋器和運行時環境有關的操作
from pdfminer.pdfdocument import PDFDocument  # 從pdfminer模塊導入PDFDocument類,用于表示PDF文檔
from pdfminer.pdfparser import PDFParser  # 從pdfminer模塊導入PDFParser類,用于解析PDF文檔
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter  # 從pdfminer模塊導入資源管理和頁面解釋類
from pdfminer.pdfdevice import PDFDevice, TagExtractor  # 從pdfminer模塊導入PDF設備和標簽提取器類
from pdfminer.pdfpage import PDFPage  # 從pdfminer模塊導入PDFPage類,用于表示PDF頁面
from pdfminer.converter import XMLConverter, HTMLConverter, TextConverter  # 從pdfminer模塊導入轉換器類,用于將PDF轉換為其他格式
from pdfminer.cmapdb import CMapDB  # 從pdfminer模塊導入字符映射數據庫類
from pdfminer.layout import LAParams  # 從pdfminer模塊導入布局分析參數類
from pdfminer.image import ImageWriter  # 從pdfminer模塊導入圖像寫入類

# 定義主函數,argv是一個包含命令行參數的列表
def main(argv):
    import getopt  # 導入getopt模塊,用于解析命令行參數
    # 定義一個顯示用法的內部函數
    def usage():
        print ('usage: %s [-P password] [-o output] [-t text|html|xml|tag]'
               ' [-O output_dir] [-c encoding] [-s scale] [-R rotation]'
               ' [-Y normal|loose|exact] [-p pagenos] [-m maxpages]'
               ' [-S] [-C] [-n] [-A] [-V] [-M char_margin] [-L line_margin]'
               ' [-W word_margin] [-F boxes_flow] [-d] input.pdf ...' % argv[0])
        return 100  # 返回一個錯誤代碼
    try:
        # 使用getopt解析命令行參數
        (opts, args) = getopt.getopt(argv[1:], 'dP:o:t:O:c:s:R:Y:p:m:SCnAVM:W:L:F:')
    except getopt.GetoptError:
        return usage()  # 如果解析失敗,則顯示用法并退出
    if not args: return usage()  # 如果沒有提供非選項參數(例如輸入文件),則顯示用法并退出
    # 初始化一些變量
    debug = 0  # 調試級別
    password = b''  # PDF密碼
    pagenos = set()  # 要處理的頁碼集
    maxpages = 0  # 最大頁數
    outfile = None  # 輸出文件名
    outtype = None  # 輸出類型
    imagewriter = None  # 圖像寫入對象
    rotation = 0  # 旋轉角度
    stripcontrol = False  # 是否剝離控制字符
    layoutmode = 'normal'  # 布局模式
    encoding = 'utf-8'  # 編碼方式
    pageno = 1  # 頁面號
    scale = 1  # 縮放因子
    caching = True  # 是否緩存
    showpageno = True  # 是否顯示頁面號
    laparams = LAParams()  # 布局分析參數對象
    for (k, v) in opts:  # 遍歷選項和值
        if k == '-d': debug += 1  # 設置調試級別
        elif k == '-P': password = v.encode('ascii')  # 設置密碼
        elif k == '-o': outfile = v  # 設置輸出文件名
        elif k == '-t': outtype = v  # 設置輸出類型
        elif k == '-O': imagewriter = ImageWriter(v)  # 創建圖像寫入對象
        elif k == '-c': encoding = v  # 設置編碼方式
        elif k == '-s': scale = float(v)  # 設置縮放因子
        elif k == '-R': rotation = int(v)  # 設置旋轉角度
        elif k == '-Y': layoutmode = v  # 設置布局模式
        elif k == '-p': pagenos.update(int(x)-1 for x in v.split(','))  # 更新頁碼集
        elif k == '-m': maxpages = int(v)  # 設置最大頁數
        elif k == '-S': stripcontrol = True  # 啟用剝離控制字符
        elif k == '-C': caching = False  # 禁用緩存
        elif k == '-n': laparams = None  # 禁用布局分析參數
        elif k == '-A': laparams.all_texts = True  # 啟用所有文本選項
        elif k == '-V': laparams.detect_vertical = True  # 啟用垂直檢測選項
        elif k == '-M': laparams.char_margin = float(v)  # 設置字符邊距
        elif k == '-W': laparams.word_margin = float(v)  # 設置單詞邊距
        elif k == '-L': laparams.line_margin = float(v)  # 設置行邊距
        elif k == '-F': laparams.boxes_flow = float(v)  # 設置框流
    # 設置調試級別
    PDFDocument.debug = debug
    PDFParser.debug = debug
    CMapDB.debug = debug
    PDFPageInterpreter.debug = debug
    # 創建PDF資源管理器對象
    rsrcmgr = PDFResourceManager(caching=caching)
    # 根據輸出類型和選項創建相應的PDF設備對象
    if not outtype:
        outtype = 'text'  # 默認為文本輸出
        if outfile:
            if outfile.endswith('.htm') or outfile.endswith('.html'):
                outtype = 'html'  # 如果輸出文件名以.htm或.html結尾,則設置為html輸出
            elif outfile.endswith('.xml'):
                outtype = 'xml'  # 如果輸出文件名以.xml結尾,則設置為xml輸出
            elif outfile.endswith('.tag'):
                outtype = 'tag'  # 如果輸出文件名以.tag結尾,則設置為tag輸出
            elif outtype == 'tag':
        device = TagExtractor(rsrcmgr, outfp)  # 如果輸出類型為'tag',則創建TagExtractor對象
    else:
        return usage()  # 如果不識別的輸出類型,則顯示用法并退出

    for fname in args:  # 遍歷所有輸入文件名
        with open(fname, 'rb') as fp:  # 以二進制讀模式打開文件
            interpreter = PDFPageInterpreter(rsrcmgr, device)  # 創建PDF頁面解釋器對象
            # 遍歷PDF頁面,獲取頁面對象
            for page in PDFPage.get_pages(fp, pagenos,
                                          maxpages=maxpages, password=password,
                                          caching=caching, check_extractable=True):
                page.rotate = (page.rotate+rotation) % 360  # 設置頁面旋轉角度
                interpreter.process_page(page)  # 處理每個頁面

    device.close()  # 關閉設備對象,釋放資源
    outfp.close()  # 關閉輸出文件,釋放資源
    return  # 從主函數返回

# 檢查此模塊是否作為主模塊運行
if __name__ == '__main__':
    sys.exit(main(sys.argv))  # 如果是,則調用main函數,并使用命令行參數列表作為參數

convertPDF.py

#!/usr/bin/env python3
"""
Script to convert PDFs to text files.

"""

import  unicodedata, os, pdf2txt, datetime

import multiprocessing
def 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,跳過
            continue

        ID = fileNamePDF[:-4]  # 從文件名中獲取ID(去掉.pdf后綴)
        if os.path.isfile('../TXT/' + ID + '.txt'):  # 如果已經存在對應的文本文件,跳過
            continue

        pdf_list.append((i, ID, newDir, fileNamePDF))  # 將參數元組添加到pdf_list中

    process_pdfs(pdf_list)  # 調用process_pdfs函數,傳遞pdf_list以并行處理PDF文件


責任編輯:華軒 來源: PaperCodeTips
相關推薦

2020-12-31 05:37:05

HiveUDFSQL

2023-10-17 16:24:27

PythonCSV

2023-07-05 07:36:36

SpringJava代碼

2023-11-28 15:18:24

Python

2016-12-14 09:32:49

FileChanne文件復制

2024-09-25 08:00:00

Python文件處理

2023-11-28 09:00:00

機器學習少樣本學習SetFit

2024-11-20 10:00:00

Python文件讀寫

2018-03-27 13:33:48

百度

2021-08-30 07:57:26

OpenAttack文本對抗攻擊

2024-10-30 16:59:57

Python機器學習

2018-06-04 10:04:48

Python數據語言

2024-09-29 16:27:46

Python文件管理

2010-03-12 19:29:15

python svn腳

2022-08-17 12:35:26

Linux sed編輯器

2010-03-05 09:40:08

Python遞歸

2016-11-16 15:05:42

情感分析

2009-12-04 16:49:33

PHP批量導出csv文

2020-07-07 10:50:19

Python丄則表達文本

2024-04-28 11:39:17

紹csvkit數據分析
點贊
收藏

51CTO技術棧公眾號

亚洲精品美女久久久| 久久欧美在线电影| 成年人在线免费观看视频网站| 香蕉国产精品偷在线观看不卡| 欧美成人免费在线观看| 男女在线观看视频| 91福利在线导航| 超碰在线电影| 一区二区三区日韩在线观看| 亚洲一区在线不卡| 久久精品一区二区三区四区| 久久99久久久久久| 国产精品99久久久久久宅男| 色一情一乱一伦一区二区三欧美| 好看不卡的中文字幕| 91精品久久久久久久久青青| 欧美一级精品| 91精品久久久久久久久| 欧美美乳视频| 97avcom| 97品白浆高清久久久久久| 欧美丰满少妇xxxxx| 精品人人人人| 美女视频免费精品| 国产精品极品美女在线观看免费| 蜜臀av在线| 91麻豆国产自产在线观看| 欧美中文字幕一二三区视频| 最新亚洲伊人网| 五月综合激情婷婷六月色窝| 中文字幕一区二区三区免费视频| 亚洲综合免费观看高清完整版在线| 久久.com| 欧美午夜精品在线| 在线观看精品一区二区三区| 欧美精品xxxxbbbb| 瑟瑟视频在线看| 久久精品视频一| 女同一区二区三区| 成人黄色大片在线免费观看| 天天干天天操天天干天天操| 国产成人精品亚洲日本在线桃色| 黄色一级片网址| 国产欧美日韩视频在线观看| 日本性视频网| 欧美日韩一级二级三级| www在线观看黄色| 欧美成人午夜免费视在线看片| 亚洲图区在线| 九九久久99| 国产成人福利片| 成人综合av| 欧美精品第1页| 欧美亚洲黄色| 国产精品久久婷婷六月丁香| 亚洲第一区色| 日韩av高清在线看片| 亚洲自拍偷拍图区| а_天堂中文在线| 久久综合久中文字幕青草| 亚洲免费毛片| 欧洲精品码一区二区三区免费看| 成人av资源站| 尤物视频在线观看| 国产一区二区日韩精品欧美精品| 美女福利一区| 视频一区视频二区视频三区高| 久久夜色精品国产噜噜av | 在线看国产一区二区| 都市激情亚洲综合| 国产日韩欧美日韩大片| 久久成人av少妇免费| 成人网18免费网站在线| 日韩欧美在线影院| 美女少妇全过程你懂的久久| 欧美二区在线看| 中文字幕欧美激情| 91中文在线| 国产91网红主播在线观看| 精品一区二区在线视频| 亚洲女优视频| 俺去了亚洲欧美日韩| 国产欧美日韩一区二区三区在线| www.日本xxxx| 色天下一区二区三区| 中文精品一区二区三区| 精品久久香蕉国产线看观看亚洲 | avtt综合网| 日韩欧美视频一区二区三区四区| 亚洲欧洲av另类| 中文av在线全新| 高清国产一区| 一区二区在线观看免费| 日韩久久一区| 视频一区二区三区在线观看 | 精品无人区麻豆乱码久久久| 亚洲一区三区视频在线观看| 亚洲精品福利视频网站| 亚洲电影有码| 久久波多野结衣| 亚洲国产精品综合小说图片区| 粉嫩av一区二区三区四区五区 | 欧美另类z0zxhd电影| 真实原创一区二区影院| 一女被多男玩喷潮视频| 精品国产一区二区三区久久久蜜月| 成人系列视频| 日本成人a视频| 美女视频久久黄| 国产精品一区2区| 欧美女同一区| 欧美重口乱码一区二区| 欧美亚洲国产一区在线观看网站 | 亚洲精品久久久久中文字幕欢迎你| 美女一区二区在线观看| 国精产品一区一区三区视频| 日韩精品免费在线播放| 日日摸夜夜添夜夜添精品视频| 嫩草精品影院| 国产裸体写真av一区二区 | 久久亚洲中文字幕无码| 精品对白一区国产伦| 久久一区二区三区四区五区| 国产区视频在线| 亚洲精品免费av| 精品久久久久久电影| 91亚洲国产| 日本精品专区| 91精品久久久久久蜜桃| 在线免费一区三区| 黄色在线成人| 毛片网站在线免费观看| 开心色怡人综合网站| 91精品国产综合久久精品app| 国产日韩亚洲欧美精品| 国内外激情在线| 日本一区视频在线播放| 精品国产电影一区二区| 国产一区久久久| 激情久久99| 蜜臀视频一区二区三区| 欧美极品少妇xxxxⅹ免费视频| 久久精品视频网| 久久综合社区| 人与动性xxxxx免费视频| 91欧美视频网站| 91精品国产色综合久久ai换脸 | 国产精品欧美亚洲777777| 日韩一区在线播放| 精品产国自在拍| 激情福利在线| 欧美成人在线免费观看| 亚洲国产精品免费| av成人免费在线| 欧美日韩一本| 日韩精品视频无播放器在线看| 国产日韩欧美二区| 日韩av在线一区| 2014亚洲片线观看视频免费| 精品自拍偷拍| 欧美一区二区三区少妇| 欧美日韩国产免费一区二区三区 | 精品孕妇一区二区三区| 日韩欧美一区二区三区久久婷婷| 亚洲精品91美女久久久久久久| 丁香另类激情小说| 香蕉久久夜色精品国产更新时间 | 精品国产亚洲一区二区三区大结局 | 亚洲欧美国产不卡| 日韩在线资源网| 亚洲男人的天堂在线观看| 亚洲国产一区二区精品专区| 激情视频网站在线播放色| www.日本xxxx| 99电影在线观看| 亚洲男人第一网站| 亚洲男帅同性gay1069| 天使萌一区二区三区免费观看| 小说区图片区亚洲| 日本高清中文字幕二区在线| 久久福利一区二区| 精品久久久久久久久中文字幕| 亚洲视频在线观看网站| 国产一区二区中文字幕免费看| 精品国产乱码久久久久久丨区2区| 亚洲国产高清不卡| 黄色精品免费| 欧美日韩视频免费看| 国产剧情演绎av| 色一情一乱一伦一区二区三欧美| 欧美精品手机在线| 欧美三级电影在线观看| 成人免费高清观看| 国产特级黄色大片| av成人午夜| 久久综合色88| 欧美日韩免费观看一区三区| 91蝌蚪国产九色| 99精品视频网| 国产 日韩 欧美 综合 一区|