基于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局部赋值的规则
Mar 07 Python
实例讲解python函数式编程
Jun 09 Python
Python中return语句用法实例分析
Aug 04 Python
使用Python对SQLite数据库操作
Apr 06 Python
浅析python递归函数和河内塔问题
Apr 18 Python
numpy的文件存储.npy .npz 文件详解
Jul 09 Python
django开发post接口简单案例,获取参数值的方法
Dec 11 Python
python flask框架实现重定向功能示例
Jul 02 Python
Python谱减法语音降噪实例
Dec 18 Python
python FTP批量下载/删除/上传实例
Dec 22 Python
Python操作MongoDb数据库流程详解
Mar 05 Python
python小白切忌乱用表达式
May 29 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 采集程序中常用的函数
2009/12/09 PHP
PHP采用XML-RPC构造Web Service实例教程
2014/07/16 PHP
php中的字符编码转换函数用法示例
2014/10/20 PHP
摘自织梦CMS中的图片处理类
2015/08/08 PHP
ThinkPHP数据操作方法总结
2015/09/28 PHP
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
2017/03/13 PHP
php strftime函数的详细用法
2018/06/21 PHP
jQuery 表单验证扩展(四)
2010/10/20 Javascript
jQuery 无限级菜单的简单实例
2014/02/21 Javascript
Node.js中HTTP模块与事件模块详解
2014/11/14 Javascript
javascript实现的图片切割多块效果实例
2015/05/07 Javascript
js实现卡片式项目管理界面UI设计效果
2015/12/08 Javascript
AngularJS实现元素显示和隐藏的几个案例
2015/12/09 Javascript
微信开发 JS-SDK 6.0.2 经常遇到问题总结
2016/12/08 Javascript
jQuery插件FusionCharts实现的2D面积图效果示例【附demo源码下载】
2017/03/06 Javascript
jQuery弹出窗口简单实现代码
2017/03/09 Javascript
vue-devtools的安装和使用步骤详解
2019/10/17 Javascript
Vue 用Vant实现时间选择器的示例代码
2019/10/25 Javascript
jquery实现吸顶导航效果
2020/01/08 jQuery
layui实现显示数据表格、搜索和修改功能示例
2020/06/03 Javascript
python从入门到精通(DAY 3)
2015/12/20 Python
python获取指定字符串中重复模式最高的字符串方法
2018/06/29 Python
详解用python写一个抽奖程序
2019/05/10 Python
处理python中多线程与多进程中的数据共享问题
2019/07/28 Python
win10下安装Anaconda的教程(python环境+jupyter_notebook)
2019/10/23 Python
解决tensorflow打印tensor有省略号的问题
2020/02/04 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
2020/03/30 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
2020/12/24 Python
世界上最大的在线学习和教学市场:Udemy
2017/11/08 全球购物
Casetify官网:自制专属手机壳、iPad护壳和Apple Watch手表带
2018/05/09 全球购物
Kate Spade澳大利亚官方网站:美国设计师手袋品牌
2019/09/10 全球购物
加拿大品牌鞋包连锁店:Little Burgundy
2021/02/28 全球购物
税务会计岗位职责
2014/02/18 职场文书
多媒体教室标语
2014/06/26 职场文书
公司辞职信模板
2015/05/13 职场文书
协议书格式模板
2016/03/24 职场文书