基于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标准库之sqlite3使用实例
Nov 25 Python
Python是编译运行的验证方法
Jan 30 Python
python实现支持目录FTP上传下载文件的方法
Jun 03 Python
Python Requests 基础入门
Apr 07 Python
Python对List中的元素排序的方法
Apr 01 Python
CentOS 7下安装Python3.6 及遇到的问题小结
Nov 08 Python
安装PyInstaller失败问题解决
Dec 14 Python
通过实例解析Python文件操作实现步骤
Sep 21 Python
pytest配置文件pytest.ini的详细使用
Apr 17 Python
python基础之停用词过滤详解
Apr 21 Python
Python爬虫之爬取哔哩哔哩热门视频排行榜
Apr 28 Python
Python使用Beautiful Soup(BS4)库解析HTML和XML
Jun 05 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中ob(Output Buffer 输出缓冲)函数使用方法
2007/07/21 PHP
PHP Warning: PHP Startup: Unable to load dynamic library \ D:/php5/ext/php_mysqli.dll\
2012/06/17 PHP
php selectradio和checkbox默认选择的实现方法详解
2013/06/29 PHP
微信公众平台网页授权获取用户基本信息中授权回调域名设置的变动
2014/10/21 PHP
php获取文件后缀的9种方法
2016/03/22 PHP
laravel邮件发送的实现代码示例
2020/01/31 PHP
利用PHP计算有多少小于当前数字的数字方法示例
2020/08/26 PHP
javascript插入样式实现代码
2012/02/22 Javascript
jQuery循环滚动展示代码 可应用到文字和图片上
2012/05/11 Javascript
js父窗口关闭时子窗口随之关闭完美解决方案
2014/04/29 Javascript
判断在css加载完毕后执行后续代码示例
2014/09/03 Javascript
js防刷新的倒计时代码 js倒计时代码
2017/09/06 Javascript
JS+CSS实现滚动数字时钟效果
2017/12/25 Javascript
Vue项目中使用better-scroll实现一个轮播图自动播放功能
2018/12/03 Javascript
Vue 自定义指令功能完整实例
2019/09/17 Javascript
JS+CSS实现过渡特效
2021/01/02 Javascript
[03:42]2014DOTA2国际邀请赛 第三日比赛排位扑朔迷离
2014/07/12 DOTA
使用go和python递归删除.ds store文件的方法
2014/01/22 Python
Python实现多线程下载文件的代码实例
2014/06/01 Python
Python字符串替换实例分析
2015/05/11 Python
python模块简介之有序字典(OrderedDict)
2016/12/01 Python
python实现折半查找和归并排序算法
2017/04/14 Python
Python学习小技巧之列表项的推导式与过滤操作
2017/05/20 Python
python的多重继承的理解
2017/08/06 Python
python的文件操作方法汇总
2017/11/10 Python
Python高级特性之闭包与装饰器实例详解
2019/11/19 Python
python实现将字符串中的数字提取出来然后求和
2020/04/02 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
2020/05/25 Python
tensorflow 2.0模式下训练的模型转成 tf1.x 版本的pb模型实例
2020/06/22 Python
整理HTML5的一些新特性与Canvas的常用属性
2016/01/29 HTML / CSS
乐高西班牙官方商店:LEGO Shop ES
2019/12/01 全球购物
加拿大领先的时尚和体育零售商:Sporting Life
2019/12/15 全球购物
服装设计专业自荐书范文
2013/12/30 职场文书
打架检讨书100字
2014/01/08 职场文书
导游词之山东红叶谷
2019/10/31 职场文书
浅谈Python魔法方法
2021/06/28 Java/Android