python转换doc到pdf(利用python将图片版PDF转文字版PDF)
类别:脚本大全 浏览量:2786
时间:2021-10-07 00:02:28 python转换doc到pdf
利用python将图片版PDF转文字版PDF图片版pdf无法复制,转化成文字版的pdf后使用更方便.
我们需要用到python3.6,pypdf2,ghostscript,pythonmagick,百度文字识别服务和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
示例代码如下:
|
#导入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
原文链接:https://blog.csdn.net/sqq513/article/details/79368243
您可能感兴趣
- pythonhtml文件转换成pdf库(Python3转换html到pdf的不同解决方案)
- python后端生成的pdf文件(Python实现截取PDF文件中的几页代码实例)
- asp.net把word文档转换成pdf
- html转ppt(HTML里显示pdf、word、xls、ppt的方法示例)
- html5canvas画图有什么用(Html5基于canvas实现电子签名并生成PDF文档)
- python爬取百度搜索pdf文档(Python实现的爬取百度文库功能示例)
- python读取word的表格(Python使用reportlab模块生成PDF格式的文档)
- asp.net将ppt文档转换成pdf
- python3html怎么转换成pdf(Python实现html转换为pdf报告生成pdf报告功能示例)
- vue前台解析pdf文件流(Vue实现在线预览pdf文件功能利用pdf.js/iframe/embed)
- 利用python合并pdf(Python合并同一个文件夹下所有PDF文件的方法)
- php读取远程的txt文件(php 根据URL下载远程图片、压缩包、pdf等文件到本地)
- python创建pdf(Python玩转PDF的各种骚操作)
- python pdf文件操作(Python常见读写文件操作实例总结文本、json、csv、pdf等)
- python转换doc到pdf(利用python将图片版PDF转文字版PDF)
- ASP.NET将WORD、PDF、PPT转为图片
- 白蓝色穿搭(白蓝色衣服配什么裤子)
- 天空是什么颜色(天空是什么颜色的英语)
- 高马尾扎发(高马尾扎发教程视频)
- 这里输入关键词(请手动输入关键词)
- 小说 顾瑾岚拿出一套飞行棋,别说你连飞行棋都不会哦(顾瑾岚拿出一套飞行棋)
- 金品公司 界界乐中秋限定飞行棋礼盒 露营藤篮礼盒全新上市(界界乐中秋限定飞行棋礼盒)
热门推荐
- python读取文件的方法和区别(浅谈PYTHON 关于文件的操作)
- dede后台建栏目(DedeEIMS后台栏目模板含单独页模板修改方法)
- dedecms标签分类(dedecms list增加noflag属性的方法 实现让列表标签不调用有推荐属性的文章)
- fastdfs服务器集群(fastdfs+nginx集群搭建的实现)
- python 组合数据类型(详解Python3 对象组合zip和回退方式*zip)
- php系统转换的三种方式(PHP容器类的两种实现方式示例)
- wxpython控件如何移动(基于wxPython的GUI实现输入对话框1)
- 怎么把网站放进云服务器(云服务器可以放几个网站?)
- dedecms标签调用大全(dedecms 官方网站或演示地址字段长度不够出现截断的修改方法)
- flow布局(详解为什么设置overflow为hidden可以清除浮动带来的影响)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9