作者 | 杜万(倚贤) 阿里云技术专家

简介

首先介绍下在本文出现的几个比较重要的概念:

OCR(光学字符识别):光学字符识别(Optical Character Recognition, OCR)是指对文本资料的图像文件进行分析识别处理,获取文字及版面信息的过程。亦即将图像中的文字进行识别,并以文本的形式返回。

Tesserocr:Tesserocr 是 python 的一个 OCR 识别库,但其实是对 tesseract 做的一层 python API 封装,所以它的核心是 tesseract。

函数计算(Function Compute):函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。函数计算更多信息参考

Funcrfat:Funcraft 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API 网关、日志服务等资源。它通过一个资源配置文件(template.yml),协助您进行开发、构建、部署操作。Fun 的更多文档参考

备注: 本文介绍的技巧需要 Funcraft 版本大于等于 3.6.8 。

本文介绍将一个预制的 tesserocr 示例快速部署到函数计算平台。该示例借助于 Funcraft 安装了最新的 4.1.1 版本的 tesseract,相比于包管理器的 3.0.2 版本识别率大幅度提升。

该示例提供了一个 vue.js 实现的交互界面,有三种提供输入图片的方式:使用示例图片、上传图片或者提供图片 URL。然后用户点击识别按钮就能迅速体验识别效果。

将 tesserocr 部署于函数计算,借助于函数计算的自动伸缩和按量计费的特性,提供了免运维和成本优势。

下面是部署以后的使用效果动图:



初始化

git clone https://github.com/vangie/fc-ocr-example.git

安装依赖

$ fun install

本地测试

$ fun local start domain_for_ocr
using template: template.yml
CustomDomain domain_for_ocr of tesserocr/tesserocr was registered
url: http://localhost:8000/
methods: [ 'GET', 'POST' ]
authType: ANONYMOUS function compute app listening on port 8000!

使用浏览器打开 http://localhost:8000/

同步文件到 NAS

同步模型目录 tessdata_fast 和 依赖目录 .fun/root .fun/python 到 NAS 盘。

$ fun nas sync

部署

$ fun deploy
using template: template.yml
using region: cn-shanghai
using accountId: ***********3743
using accessKeyId: ***********Ptgk
using timeout: 60 ... Detect 'DomainName:Auto' of custom domain 'domain_for_ocr'
Fun will reuse the temporary domain 1712300-1986114430573743.test.functioncompute.com, expired at 2020-04-27 19:35:00, limited by 1000 per day. Waiting for custom domain domain_for_ocr to be deployed...
custom domain domain_for_ocr deploy success ...

注意上面返回的临时域名地址:1712300-1986114430573743.test.functioncompute.com

使用浏览器打开 http://1712300-1986114430573743.test.functioncompute.com

小结

  1. Tesserocr 库提供了开箱即用的图片识别效果,而且提供了预训练好的模型,如果需要也可以直接训练模型。
  2. 函数计算为 Tesserocr 服务化提供了便利。借助函数计算可以轻松部署一个高可用、按量访问量计费的 OCR 服务。
  3. Funcraft 工具解决 Tesserocr 移植到函数计算的一些技术难题,比如原生依赖、打包问题。细节可以查看 Funfile 文件。

最新文章

  1. 缓存依赖中cachedependency对象
  2. [kohana] kohana3.2,如何兼容PDO数据库连接方式
  3. Android ui 测试课堂笔记
  4. NSRunLoop详解
  5. Linux下VFP NEON浮点编译
  6. 常见概率组合题目总结quickstart
  7. Calendar类中add/set/roll方法的区别
  8. 常用css表达式-最小宽度-上下居中
  9. HubbleDotNet全文搜索数据库组件(二)
  10. 深入 HTML5 Web Worker 应用实践:多线程编程
  11. Linux小知识收集(不断更新)
  12. 16.kubernetes的RBAC
  13. L - Vases and Flowers HDU - 4614 线段树+二分
  14. JavaScript 编码规范(中文/Airbnb公司版)
  15. HDU 3999 The order of a Tree (先序遍历)
  16. Spring Security自定义GrantedAuthority前缀
  17. mvc.net路由中带特殊字符如【.*/\】等时遇到的天坑
  18. djangorestframework接口文档自动生成
  19. esper 附录A
  20. 基于EasyNVR+EasyDSS H5视频直播二次开发实现业务需求:直接使用播放页面

热门文章

  1. jQuery中ajax请求的六种方法(三、四):$.getJSON()方法
  2. linux 常用命令(三)——(centos7)MySql 5.7添加用户、删除用户与授权
  3. mysql基础操作(三):数据约束
  4. linux 常用命令(二)——(centos6.8-centos7)防火墙的启动、关闭
  5. hash类型数据的操作指令
  6. python 修改图像大小和分辨率
  7. Python习题集(七)
  8. 1.24学习总结——HTML常见标签
  9. Windows难民安装docker的注意事项
  10. 【PHP数据结构】图的应用:最短路径