python3 將pdf檔案轉為text

2021-10-06 00:23:54 字數 2589 閱讀 9493

pdf檔案儘管可以用python提取文字,但存在加密的情況,那種pdf就是解析不了的。另外pdf更類似於,所以即使可以用python提取,結果也容易有問題。所以效果不敢保證。

在python3中解析pdf一般用pdfminer3k,就是pdfminer的python3版本。直接pip安裝即可

pip install pdfminer3k
# -*- encoding:utf-8 -*-

import importlib

import sys

import time

# 提取**

importlib.

reload

(sys)

time1 = time.time(

)import os.path

from pdfminer.pdfparser import pdfparser,pdfdocument

from pdfminer.pdfinterp import pdfresourcemanager, pdfpageinterpreter

from pdfminer.converter import pdfpageaggregator

from pdfminer.layout import lttextboxhorizontal,laparams,ltlayoutcontainer,lttextbox

from pdfminer.pdfinterp import pdftextextractionnotallowed

defparse

(pdf_path,txt_path)

:'''解析pdf文字,並儲存到txt檔案中'''

fp =

open

(pdf_path,

'rb'

)#用檔案物件建立乙個pdf文件分析器

parser = pdfparser(fp)

#建立乙個pdf文件

doc = pdfdocument(

)#連線分析器,與文件物件

parser.set_document(doc)

doc.set_parser(parser)

#加密的pdf這裡需要傳入password

doc.initialize(

)#檢測文件是否提供txt轉換,不提供就忽略

ifnot doc.is_extractable:

raise pdftextextractionnotallowed

else

:#建立pdf,資源管理器,來共享資源

rsrcmgr = pdfresourcemanager(

)#建立乙個pdf裝置物件

laparams = laparams(

) device = pdfpageaggregator(rsrcmgr,laparams=laparams)

#建立乙個pdf解釋其物件

interpreter = pdfpageinterpreter(rsrcmgr,device)

#迴圈遍歷列表,每次處理乙個page內容

# doc.get_pages() 獲取page列表

for page in doc.get_pages():

interpreter.process_page(page)

#接受該頁面的ltpage物件

layout = device.get_result(

)# 這裡layout是乙個ltpage物件 裡面存放著 這個page解析出的各種物件

# 一般包括lttextbox, ltfigure, ltimage, lttextboxhorizontal 等等

# 想要獲取文字就獲得物件的text屬性,

for x in layout:

# if isinstance(x, lttextbox): # 這樣提取的**會變成多行

# with open(txt_path,'a') as f:

# results = x.get_text()

# print(results)

# f.write(x.get_text().strip())if(

isinstance

(x,lttextboxhorizontal)):

# 這樣的**只有一行

with

open

(txt_path,

'a')

as f:

results = x.get_text(

)print

(results)

f.write(results +

"\n"

)if __name__ ==

'__main__'

: pdf_path = r'c:\users\31214\documents\2.pdf'

txt_path =

'test.txt'

parse(pdf_path,txt_path)

time2 = time.time(

)print

("總共消耗時間為:"

,time2-time1)

Python3檢驗pdf檔案是否有效

利用pypdf2的pdffilereader模組開啟pdf檔案,如果不拋異常,就認為此pdf檔案有效。有時開啟並不丟擲異常,但是有這種警告 userwarning startxref on same line as offset pdf.py 1680 這種情況pdf多半也是壞的,可進一步通過頁數判...

word轉為pdf檔案

第一種 使用openoffice外掛程式完成 缺點 只能轉換真正的word文件 startfile和overfile 最好在同乙個目錄下 param startfile 源檔案目錄 word檔案 param overfile 轉換的pdf檔案目錄 throws ioexception public ...

python3 抽取PDF文字

coding utf 8 import datetime import re import sys import time from datetime import timedelta from io import stringio from pdfminer.converter import te...