利用python將圖片版PDF轉(zhuǎn)文字版PDF
圖片版PDF無(wú)法復(fù)制,轉(zhuǎn)化成文字版的PDF后使用更方便.
我們需要用到python3.6,pypdf2,ghostscript,PythonMagick,百度文字識(shí)別服務(wù)和pdfkit.
安裝
安裝python3.6 略
安裝ghostscript
https://ghostscript.com/download/gsdnld.html
安裝wkhtmltopdf
https://wkhtmltopdf.org/downloads.html
pip安裝PyPDF2,ghostscript,baidu-aip,pdfkit
pip install PyPDF2 pip install ghostscript pip install baidu-aip pip install pdfkit
pip安裝PythonMagick
https://www.lfd.uci.edu/~gohlke/pythonlibs/
cd 下載目錄 pip install PythonMagick‑0.9.13‑cp36‑cp36m‑win_amd64.whl
pypdf2用于拆分和合并PDF
示例代碼如下:
#導(dǎo)入PdfFileReader和PdfFileWriter from PyPDF2 import PdfFileReader, PdfFileWriter #獲取一個(gè)pdf對(duì)象 pdf_input = PdfFileReader(open(r'pdf路徑', 'rb')) #獲取pdf頁(yè)數(shù) page_count = pdf_input.getNumPages() #獲取pdf第四頁(yè)的內(nèi)容 page = pdf_input.getPage(3) page['/Contents'] #獲取一個(gè)pdfWriter對(duì)象 pdf_output = PdfFileWriter() # 將一個(gè) PageObject 加入到 PdfFileWriter 中 pdf_output.addPage(page) #把新pdf保存 pdf_output.write(open(r'新pdf路徑','wb'))
PythonMagick用于將單頁(yè)P(yáng)DF轉(zhuǎn)化為jpg
百度云-文字識(shí)別-python SDK
每天有500次免費(fèi)的識(shí)別
示例代碼如下:
#導(dǎo)入baidu-aip from aip import AipOcr #https://console.bce.baidu.com/#/index/overview #產(chǎn)品服務(wù)->人工智能->文字識(shí)別->創(chuàng)建應(yīng)用 #獲取以下三個(gè)值 APP_ID = '??' API_KEY = '??' SECRET_KEY = '?? ' #新建一個(gè)AipOcr client = AipOcr(APP_ID, API_KEY, SECRET_KEY) #讀取本地圖片的函數(shù) def get_file_content(filePath): with open(filePath, 'rb') as fp: return fp.read() #讀取本地圖片 image = get_file_content('p1.jpg') #可選參數(shù) options = {} options["language_type"] = "CHN_ENG" options["detect_direction"] = "true" options["detect_language"] = "true" options["probability"] = "true" #通用文字識(shí)別 client.basicGeneral(image, options) #讀取網(wǎng)絡(luò)圖片 url = "https://note.youdao.com/yws/public/resource/1577071c1ffa2b6bf4e238ef6dbcfbf5/xmlnote/E5A19BEDFEBA4879B217C5BBF53B0245/22138" #可選參數(shù) options = {} options["language_type"] = "CHN_ENG" options["detect_direction"] = "true" options["detect_language"] = "true" options["probability"] = "true" #通用文字識(shí)別 client.basicGeneralUrl(url, options) #讀取本地表格圖片的函數(shù) def get_file_content(filePath): with open(filePath, 'rb') as fp: return fp.read() #讀取本地表格圖片 image = get_file_content('p2.jpg') #可選參數(shù) options = {} options["language_type"] = "CHN_ENG" options["detect_direction"] = "true" options["detect_language"] = "true" options["probability"] = "true" #通用文字識(shí)別 client.basicGeneral(image, options) #讀取表格分割效果較差!
pdfkit用于利用字符串生成pdf
示例代碼如下:
#pdfkit安裝位置設(shè)置 path_wk = r'pdfkit安裝位置設(shè)置' pdfkit_config = pdfkit.configuration(wkhtmltopdf = path_wk) #pdfkit參數(shù) pdfkit_options = {'encoding': 'UTF-8',} #制作PDF pdfkit.from_string(('string'),'D:\test.pdf',configuration=pdfkit_config,options=pdfkit_options)
完整代碼如下
#導(dǎo)入所需包 #os,操作文件和路徑 import os #ghostscript,代碼簡(jiǎn)化 import ghostscript #pypdf2,拆分pdf from PyPDF2 import PdfFileReader, PdfFileWriter #PythonMagick,單頁(yè)P(yáng)DF轉(zhuǎn)圖片 from PythonMagick import Image #baidu-aip,百度文字識(shí)別 from aip import AipOcr #pdfkit,字符串制作PDF import pdfkit #參數(shù) path='??' pdfname='??' DPI='85' #https://console.bce.baidu.com/#/index/overview #產(chǎn)品服務(wù)->人工智能->文字識(shí)別->創(chuàng)建應(yīng)用 #獲取以下三個(gè)值 APP_ID = '??' API_KEY = '??' SECRET_KEY = '?? ' #pdfkit安裝位置設(shè)置 path_wk = r'pdfkit安裝位置設(shè)置' pdfkit_config = pdfkit.configuration(wkhtmltopdf = path_wk) #pdfkit參數(shù) pdfkit_options = {'encoding': 'UTF-8',} #PDF轉(zhuǎn)化為圖片 os.chdir(path) pdf_input = PdfFileReader(open(pdfname, 'rb')) #自動(dòng)獲取PDF頁(yè)數(shù) page_count = pdf_input.getNumPages() page_range=range(page_count) #也可以手工指定PDF需要轉(zhuǎn)換的頁(yè)數(shù) #page_range=range(0,100) #使用PyPDF和ghostscript #==超級(jí)好用,超級(jí)直觀,超級(jí)短== for page_num in page_range: im = Image() im.density(DPI) im.read(pdfname + '[' + str(page_num) +']') im.write(str(page_num)+ '.jpg') #圖片轉(zhuǎn)化為字符串 #新建一個(gè)AipOcr client = AipOcr(APP_ID, API_KEY, SECRET_KEY) #讀取本地圖片的函數(shù) def get_file_content(filePath): with open(filePath, 'rb') as fp: return fp.read() #可選參數(shù) options = {} options["language_type"] = "CHN_ENG" options["detect_direction"] = "false" options["detect_language"] = "false" options["probability"] = "false" allteststr=[] for page_num in page_range: #讀取本地圖片 image = get_file_content(r'%s\%s.jpg' % (path,page_num)) #通用文字識(shí)別,得到的是一個(gè)dict testjson=client.basicGeneral(image, options) teststr='' for x in testjson['words_result']: teststr=teststr+x['words']+'</br>' allteststr.append(teststr) #字符串寫(xiě)入PDF for page_num in page_range: pdfkit.from_string((allteststr[page_num]),'%s.pdf' % (str(page_num)),configuration=pdfkit_config,options=pdfkit_options) #合并單頁(yè)P(yáng)DF pdf_output = PdfFileWriter() for page_num in page_range: os.chdir(path) pdf_input = PdfFileReader(open('%s.pdf' % (str(page_num)), 'rb')) page = pdf_input.getPage(0) pdf_output.addPage(page) pdf_output.write(open('newpdf.pdf','wb'))
以上就是為大家介紹的如何使用python3.6,pypdf2,ghostscript,PythonMagick,百度文字識(shí)別服務(wù)和pdfkit
- Python自制一個(gè)PDF轉(zhuǎn)PNG圖片小工具
- 詳解python實(shí)現(xiàn)多張多格式圖片轉(zhuǎn)PDF并打包成exe
- Python自動(dòng)化辦公之圖片轉(zhuǎn)PDF的實(shí)現(xiàn)
- Python實(shí)現(xiàn)文字pdf轉(zhuǎn)換圖片pdf效果
- Python把圖片轉(zhuǎn)化為pdf代碼實(shí)例
- Python 將pdf轉(zhuǎn)成圖片的方法
- windows下Python實(shí)現(xiàn)將pdf文件轉(zhuǎn)化為png格式圖片的方法
- 用python 制作圖片轉(zhuǎn)pdf工具
- Python的pdfplumber庫(kù)將pdf轉(zhuǎn)為圖片的實(shí)現(xiàn)
相關(guān)文章
Anaconda修改默認(rèn)虛擬環(huán)境安裝位置的方案分享
新安裝Anaconda后,在創(chuàng)建環(huán)境時(shí)環(huán)境自動(dòng)安裝在C盤,但是C盤空間有限,下面這篇文章主要給大家介紹了關(guān)于Anaconda修改默認(rèn)虛擬環(huán)境安裝位置的相關(guān)資料,需要的朋友可以參考下2023-01-01Python中循環(huán)依賴問(wèn)題及其解決方案
在軟件開(kāi)發(fā)中,循環(huán)依賴是一個(gè)常見(jiàn)的問(wèn)題,尤其是在使用 Python 這樣的動(dòng)態(tài)語(yǔ)言時(shí),循環(huán)依賴指的是兩個(gè)或多個(gè)模塊或組件相互依賴,形成一個(gè)閉環(huán),本文將探討 Python 中循環(huán)依賴的問(wèn)題,并提供一些解決方案,需要的朋友可以參考下2024-06-06python實(shí)現(xiàn)對(duì)求解最長(zhǎng)回文子串的動(dòng)態(tài)規(guī)劃算法
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)對(duì)求解最長(zhǎng)回文子串的動(dòng)態(tài)規(guī)劃算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06Python 進(jìn)程操作之進(jìn)程間通過(guò)隊(duì)列共享數(shù)據(jù),隊(duì)列Queue簡(jiǎn)單示例
這篇文章主要介紹了Python 進(jìn)程操作之進(jìn)程間通過(guò)隊(duì)列共享數(shù)據(jù),隊(duì)列Queue,結(jié)合實(shí)例形式分析了Python進(jìn)程數(shù)據(jù)共享、隊(duì)列數(shù)據(jù)處理相關(guān)操作技巧,需要的朋友可以參考下2019-10-10