5分钟用Python搭建一个OCR服务器,可以直接截图中提取文本_读取图片上的文字 私有服务器(2)

avatar
作者
猴君
阅读量:2

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

此处构建了一个Leptonica的映像,这部分的详细信息参考Leptonica的解释。

环境变量

我们需要设置一个环境变量来访问Tesseract数据:

$ export TESSDATA_PREFIX=/usr/local/share/  

Tesseract包

最后安装一下Tesseract相关的语言包:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

OK,Tesseract也安装好了,可以CLI来测试一下。更多的信息可以参考docs(超链接)。但是,我们还需要一个Python环境。所以,接下来安装一个能够接受以下两种请求的Flask服务器:

  1. 接受图像URL

  2. 能够对图像进行字符识别

搭建Web服务器

最有趣的事情来了!首先,我们需要构建一种通过Python和Tesseract交互的方式。我们可以使用popen,但是那不是python的风格。所以,我们可以使用一个非常小但是功能非常强大的Python包将Tesseract封装起来——pytesseract(超链接)。

想要快点的话,就运行_app.sh脚本,否则,点击这里(超链接)获取代码/结构的模板,然后运行一下命令:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

注意:Flask模板(有Real Python(超链接)维护)是一个获取简单的具有Python风格的服务器的非常棒的库。本文将它用来作为基本程序。点击这里(超链接)获取更多信息。

安装OCR引擎

现在,我们需要用pytesseract来创建一个类来读取图片。在flask_server目录下创建一个新的文件ocr.py,写入如下代码:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

非常好!

主方法process_image()的功能是锐化图像文本。

现在,这个模块已经可以用了。

可选项:为你的OCR引擎创建一个CLI工具

做了这么多繁琐配置工作,让我们来创建一个CLI工具来调节一下心情吧。在flask_server目录下创建一个新的文件cli.py,写入如下代码:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

非常简单。之后我们就能看到从我们的OCR引擎中输出到标准输出STDOUT上的文本了。执行python flask_server/cli.py来试一下吧。

回到服务器

既然我们已经安装好了OCR引擎,接下来该准备输出了。讲下面的代码加入到

app.py文件:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

确保引入的下列包是最新的:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

最后,添加一行API版本号:

_VERSION = 1 # API version  

从代码中可以看到,我们以PIL中Image文件对象的方式把JSON的响应传入引擎的process_image()方法中。并且,就目前而言,它只支持.jpg图片。

注意:如果PIL包没有安装的话,可以用Pillow包来代替。PIL有一些问题还没有解决,Python社区对它的看法也不统一,详细情况可以自行Google。

测试

运行你的程序:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

然后,在另外一个终端运行:

$ curl -X POST http://localhost:5000/v1/ocr -d '{"image_url": "some_url"}' -H "Content-Type: application/json"  

例子

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

前端

现在后端OCR引擎的API已经准备好了,我们可以增加一个基本的前端来使用这些API,并将结果通过AJAX和jQuery添加到DOM中。这部分内容本文就不讲了,详见这里(超链接)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

用下面的样本来测试一下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

总结

希望大家喜欢照片教程。

最后

不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~

给大家准备的学习资料包括但不限于:

Python 环境、pycharm编辑器/永久激活/翻译插件

python 零基础视频教程

Python 界面开发实战教程

Python 爬虫实战教程

Python 数据分析实战教程

python 游戏开发实战教程

Python 电子书100本

Python 学习路线规划

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!