用OCR完成发票验真综合应用开发【玩转华为云】

举报
龙哥手记 发表于 2022/09/16 18:35:36 2022/09/16
【摘要】 基于文字识别服务OCR和弹性云服务器ECS开发并部署增值税发票验真web应用测试下
本文主要内容有:
  • 一 文本识别OCR
  • 二 图像识别是啥
  • 三 开通服务及获取AK、SK
  • 四 环境准备好先
  • 增值税验真web应用开发

1234.gif

一 💡 文本识别OCR

它能提供在线文字识别服务,将图片、扫描件或PDF、OFD文档中的文字识别成可编辑的文本,OCR文字识别支持证件识别、票据识别、定制模板识别、通用表格文字识别等;

1.1 流程我说下

1.2 使用前必读

用户需要具备编程能力,熟悉Java、Python、iOS、Android、Node.js语言;

OCR服务需要用户通过调用API接口,将图片或扫描件中的文字识别成可编辑的文本,然后返回JSON格式的识别结果,用户需要通过编码将识别结果对接到业务系统或保存为TXT、Excel等格式;

1.3 应用场景

智能分类识别服务应用在身份认证、财务报销等多种场景,使用方便,有效提升数据录入效率;

场景一:卡证、发票混合识别

场景二:相同类型发票识别

场景三:不同类型发票识别

识别类型有

  • 卡证类

    目前支持的卡证类包含:身份证(包含头像面、国徽面)、驾驶证(包含主页、副页)、行驶证(包含主页、副页)、护照、银行卡、道路运输证等;

  • 票据类

    目前支持的票据类包含:增值税发票(包含专用发票、普通发票、电子普通发票)、机动车销售统一发票、出租车发票、火车票、定额发票、车辆通行费发票、飞机行程单等;

优势是啥呢

  • 超级API

    支持对各类卡证和票据的单张图像识别,也支持多种卡证票据的任意组合混贴场景的分类识别;

  • 调用更加便捷

    直接统一调用一个API即可完成对各种卡、证、票的识别,无需在调用时判断图像类型,也不用再对每种数据分别调用不同的API,降低了集成使用的复杂度

  • 价格更优惠

    价格详情请参考OCR服务价格计算器;

  • 降低管理难度

    无需对每个API的调用量进行单独的预测,然后分别购买不同大小的套餐包。以发票报销为例,很难分别对每种发票的数量进行预估,但是依据历史情况对总的发票数量进行预测就更加容易;


二 😍 图像识别是啥

使用OCR文字识别服务“增值税发票识别”、“发票验真”接口之前,必须先申请并开通服务

20.png

① 登录后跳转至控制台页面,点击左上角服务列表按钮,下拉找到【人工智能】,在【人工智能】栏下找到【文字识别OCR】,点击进入文字识别OCR服务控制台,如下

② 区域默认显示“华北-北京四”,实验中无需修改。(注:实际生产使用时,请根据各服务的部署区域选择对应区域,开通与调用的服务必须在同一个区域。)

③ 在“总览”页,根据【开通状态】查看“增值税发票识别”和“发票验真”服务是否已开通,若未开通,则需点击【开通服务】按钮,如下

25.png


获取AK、SK

① 华为云控制台页面右上角账号处点击【我的凭证】

26.png

② 依次点击【访问密钥】、【新增访问密钥】

27.png

③ 完成后会生成credentials.csv文件,点击“立即下载”。

注意:文件会下载到如下位置:/home/user/Downloads/


四 环境准备好先

4.1 新建安全组

① 服务列表搜索“ecs”,找到并进入ECS控制台:

28.png

② 找到最下方“安全组”标签页

29.png


③ 点击左上角“创建安全组”

30.png

④ 名称自定义,模板选择“通用web服务器”,点击“确定”:

31.png

⑤ 点击“配置规则”:

32.png

⑥ 点击“添加规则”:

⑦ 添加入方向端口8501-8503,点击“确定”完成安全组设置

33.png

8501端口为本次实验开发的web应用所在的端口,要想正常访问该web应用,需开放该端口

购买ECS

① 回到ECS控制台“弹性云服务器”标签页,点击“购买弹性云服务器”

34.png

② 计费模式选择“按需计费”,区域选择“华北-北京四”,可用区选“随机分配”;

35.png

③ CPU架构选择“x86计算”,规格选择“通用计算增强型”“2vCPUS-8GB内存”;

36.png

④ 镜像选择“公共镜像”、“Ubuntu”、“Ubuntu 20.04 server 64bit”,主机安全保持默认配置

37.png

⑤ 系统盘保持默认的“40GB”,点击“下一步:网络配置”

38.png

⑥ 网络选择默认的“vpc-default”,如果之前没有创建,可点击下图所示的“前往控制台创建”,创建完成后,刷新后即可看到:

39.png

⑦ 安全组选择上一小节创建的自定义安全组;

40.png

⑧ 弹性公网IP选择“全动态BGP”,带宽选择“按流量计费”,带宽大小选择“5”,完成后点击“下一步:高级配置”

41.png

⑨ 自定义云服务器名称和root用户密码(实验过程中请按照下面设置ECS名称和root密码)
云服务器名称:ecs-ocr-app
输入root用户密码:a3hZJfup%kIrhKT$

42.png

⑩ 其他保持默认,点击“下一步:确认配置”

⑪ 勾选协议,点击“立即购买”

43.png

提交成功后,如下

48.png

环境配置

① 回到ECS控制台,找到刚创建的ECS服务器,点击“远程登录”

47.png


② 点击“CloudShell”登录

46.png

③ 使用root用户登录,输入密码a3hZJfup%kIrhKT$后,点击“连接”:

45.png

连接成功后,进入cloudshell命令行界面

44.png

④ 安装软件环境

命令行终端输入并执行如下命令,安装相应python库

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple streamlit huaweicloudsdkcore huaweicloudsdkocr

命令执行情况如下所示:

此处共安装了三个库:streamlit、huaweicloudsdkcore和huaweicloudsdkocr,其中streamlit 为Python的一个简易的web组件库,帮助我们搭建UI界面,huaweicloudsdkcore和huaweicloudsdkocr为OCR服务相应的Python SDK。



五 🥩 增值税验真web应用开发

4.1 工程代码准备

① 下载项目代码

命令行终端输入如下命令,下载项目代码:

wget https://sandbox-expriment-files.obs.cn-north-1.myhuaweicloud.com/20220408/ocr_project.zip

49.png

② 解压项目代码

unzip ocr_project.zip

50.png

③ 执行ls命令确认文件是否解压成功

51.png

4.2 项目代码解读

① 生成OCR请求客户端,需要AK, SK鉴权:

52.png

② 增值税识别函数,调用增值税识别API接口

53.png

③ 发票验真函数,调用发票验真API接口

55.png

④ main函数,定义了UI界面以及程序执行过程:

56.png

4.3 项目运行测试

① 点击桌面终端,进入凭证下载目录,查看AK/SK信息

57.png

执行下面命令,查看此前下载的凭证文件

cd /home/user/Downloads/;ls

58.png

执行cat credentials.csv |grep ,查看AK/SK的值

cat credentials.csv |grep ,

59.png

② 切换到浏览器,进入cloudshell标签页,点击左侧文件浏览器,定位至root/ocr_project/main.py文件,双击main.py,修改代码,复制修改填入上步骤中的AK/SK信息

60.png

复制AK值

61.png

修改main.py的AK值

62.png

复制SK值

63.png

修改main.py的SK值

64.png

备注:修改完后,记得保存(快捷键ctrl+s)

③ 启动运行应用

在cloudshell终端输入以下命令,执行main.py,启动应用APP:

cd ocr_project
streamlit run main.py 2>run.log

65.png

将外部URL地址复制到浏览器,查看页面效果

66.png

④ 下载测试图片:
测试图片链接如下:
https://sandbox-expriment-files.obs.cn-north-1.myhuaweicloud.com/20220401/quota_invoice.jpg
将其复制到浏览器,下载至本地

67.png

⑤ 增值税发票验真测试
回到web应用界面,点击“Browse files”:

68.png

选择刚下载的测试图片:

69.png

web页面显示发票图像,继续点击“发票验真”按钮:

70.png

显示验真结果

71.png

至此,增值税发票验真H5应用开发完毕,您也可在手机端打开浏览器,输入上面的外部URL地址进行访问。由于该H5应用只部署在单台ECS上,所以能够支持的访问量较小,多人访问会使该页面卡顿。
如您想拥有一个支持大流量访问的H5应用,可以使用华为云云容器实例(Cloud Container Instance,CCI)服务进行应用部署,CCI能提供容器秒级弹性伸缩能力,让您能够轻松应对快速变化的业务访问流量,稳健保障业务高可靠性;

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。