基于Python实现对PDF文件的OCR识别


Posted in Python onAugust 05, 2016

最近在做一个项目的时候,需要将PDF文件作为输入,从中输出文本,然后将文本存入数据库中。为此,我找寻了很久的解决方案,最终才确定使用tesseract。所以不要浪费时间了,我们开始吧。

1.安装tesseract

在不同的系统中安装tesseract非常容易。为了简便,我们以Ubuntu为例。

Ubuntu中你仅仅需要运行以下命令:

基于Python实现对PDF文件的OCR识别

这将会安装支持3种不同语言的tesseract

2.安装PyOCR

现在我们还需要安装tesseract的Python接口。幸运的是,有许多出色的Python接口。

我们采用最新的一个:

基于Python实现对PDF文件的OCR识别

3.安装Wand和PIL

在我们开始之前,还需要另外安装两个依赖包。一个是Wand。它是Imagemagick的Python接口。

我们需要使用它来将PDF文件转换成图像:

基于Python实现对PDF文件的OCR识别

我们也需要PIL因为PyOCR需要使用它。你可以查看官方文档以确定如何将PIL安装到你的操作系统中。

4.热身

让我们开始我们的脚本吧。首先,我们需要导入一些重要的库:

基于Python实现对PDF文件的OCR识别

注意:我将从PIL导入的Image模块改名为PI了,因为如果不这样做的话,它将和wand.image模块发生重名冲突。

5.开始

现在我们需要获得OCR库(在本例中,即tesseract)的句柄以及我们在PyOCR中将使用的语言:

基于Python实现对PDF文件的OCR识别

我们使用tool.get_available_languages里的第二种语言,因为之前我曾尝试过,第二种语言就是英语。

接着,我们需要建立两个列表,用于存储我们的图像和最终的文本。

基于Python实现对PDF文件的OCR识别

下一步,我们需要采用wand将一个PDF文件转成jpeg文件。让我们试一试吧!

基于Python实现对PDF文件的OCR识别

注意:PDF_FILE_NAME替换成当前路径下的一个可用的PDF文件名。

wand已经将PDF中所有的独立页面都转成了独立的二进制图像对象。我们可以遍历这个大对象,并把它们加入到req_image序列中去。

基于Python实现对PDF文件的OCR识别

现在,我们仅仅需要在图像对象上运行OCR即可,非常简单:

基于Python实现对PDF文件的OCR识别

现在,所有识别出的文本已经加到了final_text序列中了。你可以任意地使用它。以上就是利用Python对PDF文件做OCR识别的全部内容,希望这个教程能够帮助到你们!

英文原文:https://pythontips.com/2016/02/25/ocr-on-pdf-files-using-python/

译者:LuCima

Python 相关文章推荐
python函数缺省值与引用学习笔记分享
Feb 10 Python
跟老齐学Python之不要红头文件(1)
Sep 28 Python
Python3.遍历某文件夹提取特定文件名的实例
Apr 26 Python
Pandas 数据处理,数据清洗详解
Jul 10 Python
python中的turtle库函数简单使用教程
Jul 23 Python
python实现将文件夹内的每张图片批量分割成多张
Jul 22 Python
Python实现FLV视频拼接功能
Jan 21 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
Apr 27 Python
为什么相对PHP黑python的更少
Jun 21 Python
python unichr函数知识点总结
Dec 16 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
Jan 06 Python
python playwright 自动等待和断言详解
Nov 27 Python
利用Python实现命令行版的火车票查看器
Aug 05 #Python
Python处理JSON数据并生成条形图
Aug 05 #Python
用Python解决计数原理问题的方法
Aug 04 #Python
快速入手Python字符编码
Aug 03 #Python
Python采用Django制作简易的知乎日报API
Aug 03 #Python
利用Python实现图书超期提醒
Aug 02 #Python
Python正规则表达式学习指南
Aug 02 #Python
You might like
php 网页播放器用来播放在线视频的代码(自动判断并选择视频文件类型)
2010/06/03 PHP
PHP批量查询WordPress留言者E-mail地址实现方法
2015/02/15 PHP
php使用Jpgraph绘制3D饼状图的方法
2015/06/10 PHP
在WordPress中获取数据库字段内容和添加主题设置菜单
2016/01/11 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
2019/03/30 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
jQuery 插件开发指南
2014/11/14 Javascript
JavaScript阻止浏览器返回按钮的方法
2015/03/18 Javascript
JavaScript中的Function函数
2015/08/27 Javascript
require.js+vue开发微信上传图片组件
2016/10/27 Javascript
JS操作input标签属性checkbox全选的实现代码
2017/03/02 Javascript
JS中IP地址与整数相互转换的实现代码
2017/04/10 Javascript
mui开发中获取单选按钮、复选框的值(实例讲解)
2017/07/24 Javascript
使用 Javascript 实现浏览器推送提醒功能的示例
2017/11/03 Javascript
vue双向绑定数据限制长度的方法
2019/11/04 Javascript
jquery实现吸顶导航效果
2020/01/08 jQuery
详解vue 中 scoped 样式作用域的规则
2020/09/14 Javascript
实现vuex原理的示例
2020/10/21 Javascript
[05:17]DOTA2睡衣妹卖萌求签名 CJ第二天全明星影像
2013/07/28 DOTA
在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程
2016/06/07 Python
python中redis查看剩余过期时间及用正则通配符批量删除key的方法
2018/07/30 Python
Django 对象关系映射(ORM)源码详解
2019/08/06 Python
Python调用graphviz绘制结构化图形网络示例
2019/11/22 Python
Python中zip()函数的解释和可视化(实例详解)
2020/02/16 Python
Python使用Socket实现简单聊天程序
2020/02/28 Python
泰坦健身器材:Titan Fitness
2018/02/13 全球购物
The North Face北面荷兰官网:美国著名户外品牌
2019/10/16 全球购物
电子狗项圈:eDog Australia
2019/12/04 全球购物
学年末自我鉴定
2014/01/21 职场文书
幼儿园大班开学寄语
2014/08/02 职场文书
习总书记三严三实学习心得体会
2014/10/13 职场文书
见习报告的格式
2014/11/04 职场文书
倡议书的格式写法
2015/04/28 职场文书
公司食堂管理制度
2015/08/05 职场文书
python实现的web监控系统
2021/04/27 Python
十大好看的穿越动漫排名:《瑞克和莫蒂》第一,国漫《有药》在榜
2022/03/18 日漫