开发函数计算的正确姿势——ocr服务(代码片段)

author author     2022-12-04     198

关键词:

技术图片

简介

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

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 文件。

阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的技术圈。”

开发函数计算的正确姿势——使用交互模式安装依赖(代码片段)

...源。它通过一个资源配置文件(template.yml),协助您进行开发、构建、部署操作。Fun的更多文档参考。备注:本文介绍的技巧需要Fun版本大于等于3.0.0-beta.1。依赖工具本项目是在MacOS下开发的,涉及到的工具是平台无关的,对于Lin... 查看详情

开发函数计算的正确姿势——使用funlocal本地运行与调试(代码片段)

...源。它通过一个资源配置文件(template.yml),协助您进行开发、构建、部署操作。Fun的更多文档参考。2.0版本的Fun,在部署这一块做了很多努力,并提供了比较完善的功能,能够做到将云资源方便、平滑地部署到云端。但该版本... 查看详情

开发函数计算的正确姿势——运行seleniumjava

前言首先介绍下在本文出现的几个比较重要的概念:函数计算(FunctionCompute):函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的... 查看详情

开发函数计算的正确姿势——运行seleniumjava

前言首先介绍下在本文出现的几个比较重要的概念:函数计算(FunctionCompute):函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的... 查看详情

开发函数计算的正确姿势——爬虫(代码片段)

...如果仅仅这样简单的介绍,并不能展现FunLocal对函数计算开发的巨大效率的提升。这一次,我们拿一个简单的场景来举例子——开发一个简单的爬虫函数(代码参考函数计算控制台模板),介绍如何以正确姿势,从零开始,开发一... 查看详情

开发函数计算的正确姿势——爬虫(代码片段)

...如果仅仅这样简单的介绍,并不能展现FunLocal对函数计算开发的巨大效率的提升。这一次,我们拿一个简单的场景来举例子——开发一个简单的爬虫函数(代码参考函数计算控制台模板),介绍如何以正确姿势,从零开始,开发一... 查看详情

开发函数计算的正确姿势——轻松解决大依赖部署(代码片段)

...源。它通过一个资源配置文件(template.yml),协助您进行开发、构建、部署操作。Fun的更多文档参考。NAS:阿里云文件存储NAS是一个可共享访问,弹性扩展,高可靠,高性能的分布式文件系统。在函数计算的场景中,由于其有代... 查看详情

开发函数计算的正确姿势——轻松解决大依赖部署(代码片段)

...源。它通过一个资源配置文件(template.yml),协助您进行开发、构建、部署操作。Fun的更多文档参考。NAS:阿里云文件存储NAS是一个可共享访问,弹性扩展,高可靠,高性能的分布式文件系统。在函数计算的场景中,由于其有代... 查看详情

开发函数计算的正确姿势——排查超时问题(代码片段)

写不尽的code,查不完的bug通常我们写bug,哦,不对,写代码时总不会一帆风顺,往往各种bug充斥其中,即使测试有较高的代码覆盖率往往也会有漏网之鱼。能写出一些比较隐蔽或者看起来像feature的bug,并且经过了测试、codereview... 查看详情

入门promise的正确姿势(代码片段)

...它可以获取异步操作的消息。Promise的基本用法Promise构造函数接受一个函数作为参数,该函数的两个参数分别是resolve和reject。它们是两个函数,由JavaScript引擎提供。resolve函数的作用是,将Promise对象的状态从“未完成”变为“成... 查看详情

使用layoutinflater的正确姿势(代码片段)

使用layoutinflater的正确姿势    一开始接触安卓开发的时候,知道layoutinflater是用来将布局文件生成对应的View.那时候还是懵懵懂懂知道需要传递一个layoutId一个parent参数和一个false参数.那时候就这样用,初初还是好好的.直到后来... 查看详情

多人协作多版本开发冲突的正确解决姿势(代码片段)

多人版本开发工作流程:https://blog.csdn.net/qq_32442973/article/details/125717959这里实际上用上一个关键命令:gitmerge--no-ff分支名注意:无论何种情况,都绝不允许把开发、测试、预生产的代码拉到自己分支上解决冲突ÿ... 查看详情

多人协作多版本开发冲突的正确解决姿势(代码片段)

多人版本开发工作流程:https://blog.csdn.net/qq_32442973/article/details/125717959这里实际上用上一个关键命令:gitmerge--no-ff分支名注意:无论何种情况,都绝不允许把开发、测试、预生产的代码拉到自己分支上解决冲突ÿ... 查看详情

gensim中正确使用姿势(代码片段)

...ensim是什么????????gensim是一个Python常用的的自然语言处理开发包,主要用于词向量训练和加载词向量,以下解释其正确使用姿势。2正确使用姿势fromgensim.modelsimportword2vec'''author="kalafinaian"email="kalafinaian@outlook.com&... 查看详情

resttemplate打印日志的正确姿势(代码片段)

背景现在随着微服务的逐渐发展,越来越多的公司开始采用微服务架构,但随之而来的问题是,服务间如何调用,如何还能负载均衡,还必须开箱即用?答案就是Spring的RestTemplate啦(并不一定要使用Rest... 查看详情

opencv实践之路——使用imread()函数读取图片的六种正确姿势(代码片段)

...p://weibo.com/xingchenbing 经常看到有人在网上询问关于imread()函数读取图片失败的问题。今天心血来潮,经过实验 查看详情

访问天地图wmts服务的正确姿势

天地图2018版对天地图应用开发流程进行了升级改造,主要有两点变化:(1)接口升级为tianditu.gov.cn政府域名,支持HTTP/HTTPS协议,原有服务域名tianditu.com继续保留;(2)自2019年1月1日起,天地图API及服务接口调用都需要获取开... 查看详情

在m1芯片的macbookpro上高效开发android的正确姿势(代码片段)

前言2020年11月,苹果发布了M1芯片以及搭载M1芯片的Mackbookpro,由于我的老笔记本还是17款的8G内存的Macbookpro,已无法满足高效工作的需求,而M1芯片在各个自媒体的评测中都取得了非常惊人的性能成就,于是我... 查看详情