看不懂pdf中的英文?就用Python
pdf作為只讀文稿,直接拿來翻譯是不現實的。當我們學會Python 後,這個問題就很好解決了。
前期準備工作:
翻譯介面: 呼叫的是api
pdfminer3k: pdfminer3k是pdfminer的Python 3埠。 PDFMiner是一種從PDF文件中提取資訊的工具。 與其他PDF相關工具不同,它完全專注於獲取和分析文字資料。 PDFMiner允許獲取頁面中文字的確切位置,以及字型或線條等其他資訊。 它包括一個PDF轉換器,可以將PDF檔案轉換為其他文字格式(如HTML)。 它有一個可擴充套件的PDF解析器,可用於其他目的而不是文字分析。
要解析PDF至少需要兩個類:PDFParser 和 PDFDocument,PDFParser 從檔案中提取資料,PDFDocument儲存資料。另外還需要PDFPageInterpreter去處理頁面內容,PDFDevice將其轉換為我們所需要的。PDFResourceManager用於儲存共享內容例如字型或圖片。
安裝:pip install pdfminer3k
前期工作準備好後,即可開始程式碼編寫。
# -*- coding: utf-8 -*- import sys import io """ Created on Sun Mar 3 12:22:49 2019 @author: Ben """ import importlib importlib.reload(sys) from pdfminer.pdfparser import PDFParser,PDFDocument from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter from pdfminer.converter import PDFPageAggregator from pdfminer.layout import LTTextBoxHorizontal,LAParams from pdfminer.pdfinterp import PDFTextExtractionNotAllowed #from PyPDF2.pdf import PdfFileReader, PdfFileWriter, ContentStream import requests import string import time import hashlib import json ##初始化 api_url = "" api_id = "" ##申請的百度翻譯介面的id cyber = "" ##申請的百度翻譯介面的password pdffile = "multinet.pdf" ##處理的pdf ENtextfile = "ENmultinet.txt" ##儲存提取的txt CNtextfile = "CNmultinet.txt" ##儲存翻譯的結果 isTranslate = False ##是否將提取的英文翻譯為中文 ## 處理PDF ## 讀取PDF的內容 filename是待處理的PDF的名字 ###使用PDFminer讀取 def getDataUsingPyPDF(filename): parser = PDFParser(open(pdffile,'rb')) #以二進位制開啟檔案 ,並建立一個pdf文件分析器 doc = PDFDocument() ##建立一個pdf文件 #將文件物件和連線分析器連線起來 parser.set_document(doc) doc.set_parser(parser) doc.initialize() #判斷該pdf是否支援txt轉換 if doc.is_extractable: #建立一個PDF裝置物件 rsrcmgr = PDFResourceManager() #建立一個pdf裝置物件 laparamas = LAParams() device = PDFPageAggregator(rsrcmgr, laparams=laparamas) #建立一個PDF直譯器物件 interpreter = PDFPageInterpreter(rsrcmgr, device) contents = "" #儲存讀取的text #依次讀取每個page的內容 for page in doc.get_pages(): interpreter.process_page(page) layout = device.get_result() # 這裡layout是一個LTPage物件 裡面存放著 這個page解析出的各種物件 一般包括LTTextBox, LTFigure, LTImage, LTTextBoxHorizontal 等等 想要獲取文字就獲得物件的text屬性, #在windows下,新檔案的預設編碼是gbk編碼,所以我們在寫入檔案的時候需要設定一個編碼格式,如下: for x in layout: if(isinstance(x,LTTextBoxHorizontal)): results = x.get_text() results = results.replace("n","") #去掉換行符 因為排版問題 有的換行導致句子中斷 contents += (results) ##為了看著舒服,每一句為一行 saveText(contents.replace(".",".n"),ENtextfile) return contents ## 將讀取的content以txt格式存放到本地 def saveText(content,Textfile): with open(Textfile,"w",encoding='utf-8') as f: f.write(content) ## 翻譯從pdf提取的content def translate(content): salt = str(time.time())[:10] final_sign = str(api_id) + content + salt+ cyber final_sign = hashlib.md5(final_sign.encode("utf-8")).hexdigest() # from to 代表翻譯的語言 paramas = { 'q':content, 'from':'en', 'to':'zh', 'appid':'%s'%api_id, 'salt':'%s'%salt, 'sign':'%s'%final_sign } my_url = api_url+'?appid='+str(api_id)+'&q='+content+'&from='+'zh'+'&to='+'en'+'&salt='+salt+'&sign='+final_sign response = requests.get(api_url,params = paramas).content content = str(response,encoding = "utf-8") json_reads = json.loads(content) return json_reads['trans_result'][0]['dst']+" " ### content = getDataUsingPyPDF(pdffile) print("讀取pdf成功,將其儲存為txt格式") if(isTranslate): clist = content.split(".") #split() 透過指定.將英文分成多個句子 i = 0 chinese = "" print("一共有"+str(clist.__len__())+"行需要翻譯") print("開始翻譯...請耐心等待") while(i<clist.__len__()):
chinese="" +="(translate(clist[i]).replace("n","。"))"
#chinese=""
i+="1"
savetext(chinese,cntextfile)=""
print("翻譯結束,ok")
學會了的小夥伴可以動手嘗試啦。更多Python學習推薦:。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1020/viewspace-2832472/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 是程式設計師,就用python匯出pdf程式設計師Python
- Python如何讀取pdf中的圖片Python
- 國外優秀教材的英文pdf網站下載地址網站
- 《Python3網路爬蟲開發實戰》PDF+原始碼+《精通Python爬蟲框架Scrapy》中英文PDF原始碼...Python爬蟲原始碼框架
- Python 將PDF轉為PDF/A、PDF/X,以及PDF/A轉回PDFPython
- 史上最全的汽車按鍵功能圖解說明 車內按鍵全英文看不懂?圖解
- Python 英文的月份轉數字及數字轉英文Python
- python統計英文文字中的迴文單詞數Python
- 英文看不懂?用這款智慧閱讀筆一目十行
- 《Python程式設計導論第2版》高畫質中文PDF+高畫質英文PDF+原始碼+測試解答Python程式設計原始碼
- Python 查詢PDF中的指定文字並高亮顯示Python
- python 分割 pdfPython
- IDES的中、英文互換IDE
- 7個Python實戰專案(附原始碼),拿走就用Python原始碼
- 是程式設計師就用Python查12306的票程式設計師Python
- Mastering AWS Development.pdf 英文原版 免費下載ASTdev
- python pdf轉ExcelPythonExcel
- 想學習區塊鏈?那就用 Python 構建一個區塊鏈Python
- PDF翻譯神器,再也不擔心讀不懂英文Paper了
- 免費英文繪本下載網站 提供epub和pdf格式網站
- Concurrent Programming on Windows.pdf 英文原版 免費下載Windows
- Troubleshooting Citrix XenDesktop.pdf 英文原版 免費下載
- Java 替換PDF中的字型Java
- Java替換PDF中的字型Java
- C# 提取PDF中的表格C#
- Java 讀取PDF中的表格Java
- 機器學習,就用Python!五大專家詳解其優勢何在機器學習Python
- python 截圖,合成 pdfPython
- python 讀取PDF表格Python
- pdf crop using pythonPython
- wxPython Recipes.pdf 2017 英文原版 免費下載Python
- Oracle Database Transactions and Locking Revealed.pdf 英文原版 免費下載OracleDatabase
- Python之將Python字串生成PDFPython字串
- word中怎麼解決英文對不齊 word英文對不齊的方法
- 精選了20個Python實戰專案(附原始碼),拿走就用!Python原始碼
- JAVA中HTML轉PDFJavaHTML
- Java Tutorial中的一個問題,我怎麼就是看不懂呢?Java
- 值得關注的 10 個 Python 英文部落格Python