侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

利用python将图片版PDF转文字版PDF

Python  /  管理员 发布于 7年前   220

图片版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 PyPDF2pip install ghostscriptpip install baidu-aippip 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和PdfFileWriterfrom 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-aipfrom aip import AipOcr#https://console.bce.baidu.com/#/index/overview#产品服务->人工智能->文字识别->创建应用#获取以下三个值APP_ID = '??'API_KEY = '??'SECRET_KEY = '?? '#新建一个AipOcrclient = 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',}#制作PDFpdfkit.from_string(('string'),'D:\test.pdf',configuration=pdfkit_config,options=pdfkit_options)

完整代码如下

#导入所需包#os,操作文件和路径import os#ghostscript,代码简化import ghostscript#pypdf2,拆分pdffrom PyPDF2 import PdfFileReader, PdfFileWriter#PythonMagick,单页PDF转图片from PythonMagick import Image#baidu-aip,百度文字识别from aip import AipOcr#pdfkit,字符串制作PDFimport 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')#图片转化为字符串#新建一个AipOcrclient = 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)#字符串写入PDFfor page_num in page_range:  pdfkit.from_string((allteststr[page_num]),'%s.pdf' % (str(page_num)),configuration=pdfkit_config,options=pdfkit_options)#合并单页PDFpdf_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


  • 上一条:
    Python使用到第三方库PyMuPDF图片与pdf相互转换
    下一条:
    Python3.0中普通方法、类方法和静态方法的比较
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 在windows10中升级go版本至1.24后LiteIDE的Ctrl+左击无法跳转问题解决方案(0个评论)
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客