利用python将图片版PDF转文字版PDF
程序员文章站
2023-11-26 15:11:22
图片版pdf无法复制,转化成文字版的pdf后使用更方便.
我们需要用到python3.6,pypdf2,ghostscript,pythonmagick,百度文字识...
图片版pdf无法复制,转化成文字版的pdf后使用更方便.
我们需要用到python3.6,pypdf2,ghostscript,pythonmagick,百度文字识别服务和pdfkit.
安装
安装python3.6 略
安装ghostscript
安装wkhtmltopdf
pip安装pypdf2,ghostscript,baidu-aip,pdfkit
pip install pypdf2 pip install ghostscript pip install baidu-aip pip install pdfkit
pip安装pythonmagick
cd 下载目录 pip install pythonmagick‑0.9.13‑cp36‑cp36m‑win_amd64.whl
pypdf2用于拆分和合并pdf
示例代码如下:
#导入pdffilereader和pdffilewriter from pypdf2 import pdffilereader, pdffilewriter #获取一个pdf对象 pdf_input = pdffilereader(open(r'pdf路径', 'rb')) #获取pdf页数 page_count = pdf_input.getnumpages() #获取pdf第四页的内容 page = pdf_input.getpage(3) page['/contents'] #获取一个pdfwriter对象 pdf_output = pdffilewriter() # 将一个 pageobject 加入到 pdffilewriter 中 pdf_output.addpage(page) #把新pdf保存 pdf_output.write(open(r'新pdf路径','wb'))
pythonmagick用于将单页pdf转化为jpg
百度云-文字识别-python sdk
每天有500次免费的识别
示例代码如下:
#导入baidu-aip from aip import aipocr #https://console.bce.baidu.com/#/index/overview #产品服务->人工智能->文字识别->创建应用 #获取以下三个值 app_id = '??' api_key = '??' secret_key = '?? ' #新建一个aipocr client = aipocr(app_id, api_key, secret_key) #读取本地图片的函数 def get_file_content(filepath): with open(filepath, 'rb') as fp: return fp.read() #读取本地图片 image = get_file_content('p1.jpg') #可选参数 options = {} options["language_type"] = "chn_eng" options["detect_direction"] = "true" options["detect_language"] = "true" options["probability"] = "true" #通用文字识别 client.basicgeneral(image, options) #读取网络图片 url = "https://note.youdao.com/yws/public/resource/1577071c1ffa2b6bf4e238ef6dbcfbf5/xmlnote/e5a19bedfeba4879b217c5bbf53b0245/22138" #可选参数 options = {} options["language_type"] = "chn_eng" options["detect_direction"] = "true" options["detect_language"] = "true" options["probability"] = "true" #通用文字识别 client.basicgeneralurl(url, options) #读取本地表格图片的函数 def get_file_content(filepath): with open(filepath, 'rb') as fp: return fp.read() #读取本地表格图片 image = get_file_content('p2.jpg') #可选参数 options = {} options["language_type"] = "chn_eng" options["detect_direction"] = "true" options["detect_language"] = "true" options["probability"] = "true" #通用文字识别 client.basicgeneral(image, options) #读取表格分割效果较差!
pdfkit用于利用字符串生成pdf
示例代码如下:
#pdfkit安装位置设置 path_wk = r'pdfkit安装位置设置' pdfkit_config = pdfkit.configuration(wkhtmltopdf = path_wk) #pdfkit参数 pdfkit_options = {'encoding': 'utf-8',} #制作pdf pdfkit.from_string(('string'),'d:\test.pdf',configuration=pdfkit_config,options=pdfkit_options)
完整代码如下
#导入所需包 #os,操作文件和路径 import os #ghostscript,代码简化 import ghostscript #pypdf2,拆分pdf from pypdf2 import pdffilereader, pdffilewriter #pythonmagick,单页pdf转图片 from pythonmagick import image #baidu-aip,百度文字识别 from aip import aipocr #pdfkit,字符串制作pdf import pdfkit #参数 path='??' pdfname='??' dpi='85' #https://console.bce.baidu.com/#/index/overview #产品服务->人工智能->文字识别->创建应用 #获取以下三个值 app_id = '??' api_key = '??' secret_key = '?? ' #pdfkit安装位置设置 path_wk = r'pdfkit安装位置设置' pdfkit_config = pdfkit.configuration(wkhtmltopdf = path_wk) #pdfkit参数 pdfkit_options = {'encoding': 'utf-8',} #pdf转化为图片 os.chdir(path) pdf_input = pdffilereader(open(pdfname, 'rb')) #自动获取pdf页数 page_count = pdf_input.getnumpages() page_range=range(page_count) #也可以手工指定pdf需要转换的页数 #page_range=range(0,100) #使用pypdf和ghostscript #==超级好用,超级直观,超级短== for page_num in page_range: im = image() im.density(dpi) im.read(pdfname + '[' + str(page_num) +']') im.write(str(page_num)+ '.jpg') #图片转化为字符串 #新建一个aipocr client = aipocr(app_id, api_key, secret_key) #读取本地图片的函数 def get_file_content(filepath): with open(filepath, 'rb') as fp: return fp.read() #可选参数 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)) #通用文字识别,得到的是一个dict testjson=client.basicgeneral(image, options) teststr='' for x in testjson['words_result']: teststr=teststr+x['words']+'</br>' allteststr.append(teststr) #字符串写入pdf for page_num in page_range: pdfkit.from_string((allteststr[page_num]),'%s.pdf' % (str(page_num)),configuration=pdfkit_config,options=pdfkit_options) #合并单页pdf 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,百度文字识别服务和pdfkit