在当今数字化迅猛发展的时代,数据信息的保存与数据分析对企业的决策和工作方向具有极为重要的指导价值。尤其在当前经济形势欠佳的情况下,企业财务运营部门怎样助力企业更有效地管控成本、提升资金利用率,已然成为一个极为紧迫且亟待解决的问题。
为了更好地管控企业运营成本,财务部门就得从数量众多的财务票据信息里提炼出有效数据,这无疑是一项极为庞大的工作任务。传统的操作方式往往需要安排大量财务人员来整理和记录企业的成本票据信息,进而为后续的数据分析以及企业下一阶段的决策提供依据。然而,依靠人工录入系统票据信息时,由于受到人的主观因素干扰,出现错误的风险通常较高。那么,这一难题该如何解决呢?腾讯云OCR就能发挥作用了。
那么什么是腾讯云OCR?以下是来自腾讯云OCR官方的介绍:【智能结构化(Smart Structure Optical Character Recognition )融合了业界领先的深度学习技术、图像检测技术以及 OCR 大模型能力,能够实现不限版式的结构化信息抽取。无论是固定卡证还是复杂的物流单据,均可实现智能识别。该产品预学习建立键值对应关系,支持客户定制模板,提升数据提取录入效率,适用于政务、票据核销、行业表单和国际物流等场景。】,这里的Smart Structure Optical Character Recognition 就是我说到的腾讯云OCR。官网地址:https://cloud.tencent.com/product/smart-ocr
根据官网对于腾讯云OCR的描述,我们也大概知道腾讯云OCR的应用场景,下面来说说腾讯云OCR的应用场景。
腾讯云OCR支持6000+种版面的证照单据识别,单一接口解决诸多证照单据识别问题,在日常生活中我们常会遇到的场景,比如:
适用于各种版式不固定、版面复杂、中英文混排的场景,针对进出口物流、货代、进出口贸易的单据,完成高精度的结构化识别:
(1)跨境货代场景,涉及单据运单、海外发票、装箱单、提单、进出口报关单、托书、磅单、货物保险单、货运到达通知。
(2)快递&快运场景,涉及单据:出货单、出库单、签回单。
(3)国际贸易与采购,涉及单据:采购订单、海外发票、海关进口关税、原厂地证明、国际信用证书。
适用于各种个人企业证件的识别场景,针对下列典型版式统一、未定制的材料,可完成高精度识别结构化:
(1)政务类个人证件,如:临时身份证、出生证、结婚证、军官证、警察证、残疾人证、导游证等。
(2)教育类个人证件,如:学生证、四六级证、教师资格证、毕业证书、学位证、学历认证、办学许可证等。
(3)交通类个人证件,如:道路运输证、从业资格证、网约车运输证、网约车驾驶证、临时车牌、车辆合格证等。
(4)企业资质类证照,如:医疗许可证、食品经营许可证、药品生产许可证、烟草专卖许可证、运输许可证等。
(5)其他单据材料,如:车险保单、快递运单、银行回单、商业汇票、磅单等。
适用于各种票据单据的识别场景,针对下列典型版式统一、未定制的材料,可完成高精度识别结构化:
(1)金融类票据单据,如:银行纸质回单、银行电子回单、大额汇兑凭证、代理记账许可证书、客户入账通知单等。
(2)财务类报销单据,如:商品小票、支付截图凭证、滴滴行程单、酒店水单、海关缴纳书、商品订单页等。
(3)运输类票据单据,如:报关单、运单、英文发票、英文小票、发货卸货单、采购单、配送单等。
适用于细分行业领域各种特殊材料的识别场景,针对下列典型版式统一、未定制的材料,可完成短文本及表格的高精度结构化:
(1)工业行业材料,如:商品标签、设备铭牌、价签等。
(2)服务行业材料,如:合同、标书、车辆保险单据、彩票等。
(3)医疗行业材料,如:药品说明书、出院记录、医院检验报告单等。
腾讯云OCR各字段精度均处于业界领先水平,文本基础识别准确率达到98%以上,文本结构化准确率达到85%以上。
腾讯云OCR可以助力企业实现票据表单信息的结构化识别和自动化录入,有效提升行业信息化程度,助力企业财务运营 高效&便捷。
正如文章开篇所描述的背景那样,在当下的商业环境中,企业面临着控制运营成本以及清晰梳理与合作商之间交易往来状况的需求。基于此,企业财务部门承担起一项重要任务,即对企业现有的各类票据信息(涵盖发票信息、报票信息等多种票据类型)进行系统整理,并将这些信息准确录入发票系统。
通过对发票系统录入信息的最终汇总与分析,企业能够精准统计出自身的成本投入、经营收益以及利润等重要数据。这些数据犹如企业运营的“晴雨表”,为企业后续的决策提供了坚实可靠的依据,助力企业在市场竞争中优化经营策略,从而实现更大的价值创造。
那么随之而来的难点也来了,企业票据每个月都会有成百上千上万,票据信息的录入需要巨大的人力投入,而人工录入除了耗时耗力之外,受到人这个因素的影响,出错的风险也比较高。并且在票据信息录入之后,还需要投入人力来核对票据信息,以求保证票据信息的准确。而这无疑会继续加大企业人力投入和成本的上升,面对这种情况该怎么办呢?腾讯云OCR融合了业界领先的深度学习技术、图像检测技术以及 OCR 大模型能力,能够实现不限版式的结构化信息抽取,同时支持客户定制模板,提升数据提取录入效率,可以极大的提高企业录入数据效率,真的实现高效与便捷同行。
点击腾讯云OCR官网首页的【开通服务】跳转到腾讯云OCR控制台,勾选协议,点击【立即开通】
开通服务后,可以看到我们首次开通文字识别服务,各个资源包有免费赠送的次数,这样就方便我们可以在接入腾讯云OCR直接先进行一下产品测试调研,确认当前产品是否符合需求
点击【文字识别控制台】可以看到当前不同资源的免费调用次数情况。
在文字识别控制台,我选择【通用印刷体识别】后面的【在线调试】,跳转到在线调试页面
在通用印刷体识别页面我直接点击【发起调用】,可以看到右侧给出提示 【ImageUrl 和 ImageBase64 必须有一个不为空】那么查看接口参数说明,这里需要提供一个 ImageUrl 链接或者ImageBase64。也就是说 图片的 ImageUrl、ImageBase64 必须提供一个,如果都提供,只使用 ImageUrl
这里为了提供一个公网的可以访问的图片地址,这里我回到腾讯云控制台:https://console.cloud.tencent.com/?from=20063&from_column=20063,输入【对象存储】
点击【对象存储】控制台入口,进入对象存储控制台,点击【存储桶列表】-【创建存储桶】,这里说明一下,如果你的账号对象存储服务没有开通,那么你可以先开通服务,具体开通步骤这里不再详细介绍
这里选择对象存储存储桶地域【广州】,由于存储桶与相同地域的其他腾讯云服务内网互通,因此这里必须选择【广州】地域,这是因为后面文字识别OCR在线调试页面的地域只有【广州】地域,相同地域下腾讯云产品内网互通,也能节省网络传输带来的耗时
点击【下一步】进入第二步配置页面,默认选择不动,继续点击【下一步】进入第三步配置页面,点击【创建】完成存储桶的创建
在对象存储控制台点击【存储桶列表】-点击刚才创建的【存储桶名称】进入存储桶详情页,点击【文件列表】-【上传文件】
在跳出的弹窗页面点击【选择文件】选择想要上传的文件后,点击【上传】完成文件上传操作
文件上传成功之后,在【文件列表】找到上传成功的文件,点击列表右侧的操作列【详情】进入到文件详情信息页面
在文件详情页面,点击文件的【对象地址】后面的复制按钮,复制文件地址到文字识别控制台在线调试页面的ImageUrl 参数
在文字识别在线调试页面将复制的ImageUrl 链接地址放入参数后,点击【发起调用】,这里提示【FailedOperation.DownLoadError 下载失败】,
这里猜测应该是我们刚才创建的存储桶访问权限是私有读写导致的,这里我们回到对象存储控制台,在【存储桶列表】页面点击存储桶名称进入存储桶详情,在详情页点击【权限管理】-【存储桶访问权限】,选择【公有读私有写】,勾选协议后点击【继续修改】,回到页面之后点击【保存】,完成存储桶属性修改
这时再回到文字识别在线调试页面,点击【发起调用】之后,就可以看到右侧生成的【响应结果】,
这里我来上传一下我提供的原图内容以及文字识别在线调试返回的响应结果
复制在线调试响应结果,这里我只复制响应结果中的文本内容,不复制具体文本内容的位置信息返回可以得到如下的结构,主要是为了对比文字识别的准确性
{
"Response": {
"Angle": 359.989990234375,
"Language": "zh",
"PdfPageSize": 0,
"RequestId": "c86c0d42-8739-458a-8531-29c09cdcd8f5",
"TextDetections": [
{
"DetectedText": "主要特性",
},
{
"DetectedText": "●完全响应式布局(支持电脑、平板、手机等所有主流设备)",
},
{
"DetectedText": "强大的一键生成功能(包括控制器、模型、视图、菜单等)",
},
{
"DetectedText": "支持多数据源,简单配置即可实现切换。",
},
{
"DetectedText": "支持按钮及数据权限,可自定义部门数据权限。",
},
{
"DetectedText": "●对常用js插件进行二次封装,使js代码变得简洁,更加易维护",
},
{
"DetectedText": "完善的XSS防范及脚本过滤,彻底杜绝XSS攻击",
},
{
"DetectedText": ".Maven多项目依赖,模块及插件分项目,尽量松耦合,方便模块升级、增减模块。",
},
{
"DetectedText": "●国际化支持,服务端及客户端支持",
},
{
"DetectedText": "完善的日志记录体系简单注解即可实现",
},
{
"DetectedText": "支持服务监控,数据监控,缓存监控功能。",
}
]
}
}
这里对比后可以发现,腾讯云OCR文字识别的通用文字识别对于截图中文字内容的识别精准度99%,只有少部分黑点识别有问题,其他都没有问题。
继续点击在线调试页面的【代码示例】可以通过切换开发语言看到不同语言的代码调用示例,你可以选择直接下载工程或者复制当前调试代码到项目中进行调试,右侧的【SDK信息】【SDK使用说明】【获取密钥】等跳转说明文档,可以帮助我们企业项目快速接入腾讯云OCR
在进行了腾讯云OCR控制台的在线调试之后,我们对于腾讯云OCR文字识别的调用流程以及请求参数,示例代码等已经有了初步的了解,下面我们开始在企业项目中接入腾讯云OCR文字识别。这里我以开源项目若依为基础,开发发票识别功能,并通过上传发票文件接入腾讯云OCR文字识别的增值税发票识别来进行本地测试。
这里我用的是本地的mysql服务,编写发票表信息字段sql语句并在navicat 数据库连接工具新建查询,执行sql语句 创建发票信息表
CREATE TABLE `sys_invoice` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`invoice_no` varchar(256) DEFAULT NULL COMMENT '发票号码',
`invoice_date` datetime DEFAULT NULL COMMENT '开票日期',
`buyer_name` varchar(256) NOT NULL COMMENT '购买方名称',
`buyer_number` varchar(256) NOT NULL COMMENT '购买方税号',
`goods_name` varchar(256) NOT NULL COMMENT '商品名称',
`goods_type` varchar(256) NOT NULL COMMENT '规格型号',
`unit_name` varchar(256) NOT NULL COMMENT '单位',
`goods_num` varchar(256) NOT NULL COMMENT '数量',
`goods_price` DECIMAL(10, 2) NOT NULL COMMENT '单价',
`goods_amount` DECIMAL(10, 2) NOT NULL COMMENT '金额',
`tax_rate` DECIMAL(10, 2) NOT NULL COMMENT '税率',
`tax_amount` DECIMAL(10, 2) NOT NULL COMMENT '税额',
`total_amount` DECIMAL(10, 2) NOT NULL COMMENT '价税合计',
`seller_name` varchar(256) NOT NULL COMMENT '销售方名称',
`seller_number` varchar(256) NOT NULL COMMENT '销售方税号',
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='发票信息';
等待发票信息表创建成功,创建成功后借助代码生成工具生成基础代码并将基础代码导入到本地项目中,配置发票信息菜单,再次启动后找到发票信息菜单,这是可以看到我们的发票信息菜单展示,点击【发票信息】-【添加】可以看到弹出的新增发票页面需要很多字段填写
如果是靠人力对着每张发票信息进行录入的话,无疑需要投入大量的人力,那么这个时候就可以增加一个上传发票自动识别发票信息的功能,那么我们新增按钮作为上传发票的入口,然后点击按钮弹窗并上传发票到腾讯云对象存储,然后再以腾讯云对象存储返回的图片地址连接作为入参调用腾讯云OCR文字识别的增值税发票识别接口,最终将返回的发票识别信息保存到数据库中。
这里关于发票上传到腾讯云对象存储的操作不是本次讨论的主要内容,因此通过页面选择增值税发票文件并上传到腾讯云对象存储的操作这里不再细说,感兴趣的可以在评论区留言咱们再聊。
这里我们直接从通过页面选择发票并上传到腾讯云对象存储后,并且我们已经拿到了腾讯云对象存储返回的增值税发票的访问Url,下面我们将发票Url 作为入参传入 腾讯云OCR 文字识别的增值税发票识别 接口。在开始调用接口之前,我们先通过腾讯云OCR 增值税发票识别的在线调试页面获取一下示例代码。
首先参考上面在线调试时的上传步骤,上传发票文件到腾讯云对象存储的存储桶,上传完成后可以看到我们刚才上传的发票文件信息
点击文件列表右侧的【详情】按钮,获取发票文件的对象地址
打开腾讯云OCR 文字识别控制台:https://console.cloud.tencent.com/ocr/overview ,在搜索框中输入【增值税发票】,选中之后点击【查询】可以看到具体的接口信息以及剩余调用次数 1000次
点击【在线调试】在发票信息页面,粘贴从对象存储获取的发票对象地址链接放入入参 ImageUrl 中,点击发起调用,可以看到具体返回的识别后的增值税发票信息
在发票识别在线调试页面,点击【代码示例】-【SDK】-【Java】鼠标悬浮指向右上角的【SDK信息】,在悬浮框中复制SDK的maven 配置内容到本地项目的 pom.xml 文件中
SDK maven 配置信息
<!--版本在maven生效需要时间,如获取不到对应的版本,可以调低版本号-->
<dependency>
<groupId>com.tencentcloudapi</groupId>
<artifactId>tencentcloud-sdk-java-ocr</artifactId>
<version>3.1.1162</version>
</dependency>
引入腾讯云OCR 文字识别SDK后的项目pom.xml文件如图
下面还需要创建调用密钥,云 API 密钥 SecretId 和 SecretKey 可以前往 API 密钥管理 获取,密钥管理地址:https://console.cloud.tencent.com/cam/capi 点击【API密钥管理】-【新建密钥】,在弹出的页面点击【复制】并记录密钥信息
为发票控制层 SysInvoiceController.java controller增加方法
/**
* 新增保存发票信息
*/
@Log(title = "发票信息", businessType = BusinessType.INSERT)
@PostMapping("/addOCR")
@ResponseBody
public AjaxResult addSaveOCR(MultipartFile file)
{
// 这里省略在页面选择发票文件后上传到腾讯云对象存储的操作,我们直接按照腾讯云对象存储返回给我们的发票文件Url后面开始操作
//..........获取文件上传到腾讯云对象存储..........
//获取到腾讯云对象存储发票文件Url之后,开始执行以下方法
String imgUrl = "https://bucket-1111111111.cos.ap-guangzhou.myqcloud.com/%E6%BB%B4%E6%BB%B4%E7%94%B5%E5%AD%90%E5%8F%91%E7%A5%A8%20%281%29.pdf";
return toAjax(sysInvoiceService.insertSysInvoiceFromOCR(imgUrl));
}
在发票信息执行的服务层service 实现类 SysInvoiceServiceImpl.java 中增加如下方法 insertSysInvoiceFromOCR,方法的主体内容为在增值税发票在线调试页面,在【代码示例】页面复制 main 函数的代码,
这里需要将 SecretId , SecretKey 替换为我们在 【API密钥管理】菜单新建的密钥
@Override
public int insertSysInvoiceFromOCR(String imgUrl) {
int i = 0;
try{
// 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密
// 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305
// 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取
Credential cred = new Credential("SecretId", "SecretKey");
// 实例化一个http选项,可选的,没有特殊需求可以跳过
HttpProfile httpProfile = new HttpProfile();
httpProfile.setEndpoint("ocr.tencentcloudapi.com");
// 实例化一个client选项,可选的,没有特殊需求可以跳过
ClientProfile clientProfile = new ClientProfile();
clientProfile.setHttpProfile(httpProfile);
// 实例化要请求产品的client对象,clientProfile是可选的
OcrClient client = new OcrClient(cred, "", clientProfile);
// 实例化一个请求对象,每个接口都会对应一个request对象
VatInvoiceOCRRequest req = new VatInvoiceOCRRequest();
req.setImageUrl(imgUrl);
// 返回的resp是一个VatInvoiceOCRResponse的实例,与请求对象对应
VatInvoiceOCRResponse resp = client.VatInvoiceOCR(req);
// 输出json格式的字符串回包
System.out.println(AbstractModel.toJsonString(resp));
//补充保存发票逻辑
SysInvoice sysInvoice = new SysInvoice();
//获取 VatInvoiceOCRResponse 返回信息并赋值到 sysInvoice 对象中 插入数据库
//......将增值税接口调用返回的信息解析并赋值......
//插入数据库
i = sysInvoiceMapper.insertSysInvoice(sysInvoice);
} catch (TencentCloudSDKException e) {
System.out.println(e.toString());
}
return i;
}
替换密钥之后,我们再次调用新增发票信息的方法来看一下增值税发票接口的返回值内容,这里我们可以看到增值税发票识别的接口已经可以正常返回内容了
增值税发票识别接口返回内容如下
/*
* 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释
* {"VatInvoiceInfos":[{"Name":"销售方识别号","Value":"91110108MA01G0FB09","Polygon":{"LeftTop":{"X":206,"Y":603},"RightTop":{"X":397,"Y":603},"RightBottom":{"X":397,"Y":620},"LeftBottom":{"X":206,"Y":620}}},{"Name":"销售方名称","Value":"北京滴滴出行科技有限公司","Polygon":{"LeftTop":{"X":206,"Y":575},"RightTop":{"X":418,"Y":575},"RightBottom":{"X":418,"Y":594},"LeftBottom":{"X":206,"Y":594}}},{"Name":"购买方识别号","Value":"91110108671745644P","Polygon":{"LeftTop":{"X":210,"Y":195},"RightTop":{"X":389,"Y":195},"RightBottom":{"X":389,"Y":212},"LeftBottom":{"X":210,"Y":212}}},{"Name":"购买方名称","Value":"北京东奥时代教育科技有限公司","Polygon":{"LeftTop":{"X":208,"Y":163},"RightTop":{"X":456,"Y":163},"RightBottom":{"X":456,"Y":184},"LeftBottom":{"X":208,"Y":184}}},{"Name":"二维码","Value":"1","Polygon":{"LeftTop":{"X":58,"Y":12},"RightTop":{"X":176,"Y":12},"RightBottom":{"X":176,"Y":130},"LeftBottom":{"X":58,"Y":130}}},{"Name":"发票名称","Value":"北京增值税电子普通发票","Polygon":{"LeftTop":{"X":376,"Y":38},"RightTop":{"X":805,"Y":38},"RightBottom":{"X":805,"Y":80},"LeftBottom":{"X":376,"Y":80}}},{"Name":"发票代码","Value":"011002300911","Polygon":{"LeftTop":{"X":920,"Y":39},"RightTop":{"X":1038,"Y":39},"RightBottom":{"X":1038,"Y":57},"LeftBottom":{"X":920,"Y":57}}},{"Name":"发票号码","Value":"No59020360","Polygon":{"LeftTop":{"X":922,"Y":68},"RightTop":{"X":1000,"Y":68},"RightBottom":{"X":1000,"Y":85},"LeftBottom":{"X":922,"Y":85}}},{"Name":"开票日期","Value":"2023年12月04日","Polygon":{"LeftTop":{"X":921,"Y":94},"RightTop":{"X":1044,"Y":94},"RightBottom":{"X":1044,"Y":114},"LeftBottom":{"X":921,"Y":114}}},{"Name":"校验码","Value":"16216882537941186622","Polygon":{"LeftTop":{"X":922,"Y":123},"RightTop":{"X":1132,"Y":123},"RightBottom":{"X":1132,"Y":140},"LeftBottom":{"X":922,"Y":140}}},{"Name":"机器编号","Value":"499098498323","Polygon":{"LeftTop":{"X":130,"Y":132},"RightTop":{"X":249,"Y":132},"RightBottom":{"X":249,"Y":151},"LeftBottom":{"X":130,"Y":151}}},{"Name":"密码区1","Value":"036007-2<>2<10322-05*>96+4/<","Polygon":{"LeftTop":{"X":714,"Y":166},"RightTop":{"X":1142,"Y":166},"RightBottom":{"X":1142,"Y":187},"LeftBottom":{"X":714,"Y":187}}},{"Name":"密码区2","Value":"6>6-45905775/*5879-87/+95738","Polygon":{"LeftTop":{"X":713,"Y":193},"RightTop":{"X":1142,"Y":193},"RightBottom":{"X":1142,"Y":213},"LeftBottom":{"X":713,"Y":213}}},{"Name":"密码区3","Value":"48>-*05*-1>/88-2991</>+63+++","Polygon":{"LeftTop":{"X":713,"Y":221},"RightTop":{"X":1142,"Y":221},"RightBottom":{"X":1142,"Y":240},"LeftBottom":{"X":713,"Y":240}}},{"Name":"密码区4","Value":"+7289*/1950182<41967++54-36*","Polygon":{"LeftTop":{"X":714,"Y":248},"RightTop":{"X":1142,"Y":248},"RightBottom":{"X":1142,"Y":268},"LeftBottom":{"X":714,"Y":268}}},{"Name":"货物或应税劳务、服务名称","Value":"*运输服务*客运服务费","Polygon":{"LeftTop":{"X":44,"Y":310},"RightTop":{"X":217,"Y":310},"RightBottom":{"X":217,"Y":330},"LeftBottom":{"X":44,"Y":330}}},{"Name":"规格型号","Value":"无","Polygon":{"LeftTop":{"X":335,"Y":312},"RightTop":{"X":354,"Y":312},"RightBottom":{"X":354,"Y":331},"LeftBottom":{"X":335,"Y":331}}},{"Name":"单位","Value":"次","Polygon":{"LeftTop":{"X":494,"Y":310},"RightTop":{"X":514,"Y":310},"RightBottom":{"X":514,"Y":329},"LeftBottom":{"X":494,"Y":329}}},{"Name":"数量","Value":"1","Polygon":{"LeftTop":{"X":632,"Y":312},"RightTop":{"X":642,"Y":312},"RightBottom":{"X":642,"Y":329},"LeftBottom":{"X":632,"Y":329}}},{"Name":"单价","Value":"1028.59","Polygon":{"LeftTop":{"X":689,"Y":310},"RightTop":{"X":753,"Y":310},"RightBottom":{"X":753,"Y":328},"LeftBottom":{"X":689,"Y":328}}},{"Name":"金额","Value":"1028.59","Polygon":{"LeftTop":{"X":852,"Y":310},"RightTop":{"X":916,"Y":310},"RightBottom":{"X":916,"Y":327},"LeftBottom":{"X":852,"Y":327}}},{"Name":"税率","Value":"3%","Polygon":{"LeftTop":{"X":953,"Y":309},"RightTop":{"X":979,"Y":309},"RightBottom":{"X":979,"Y":327},"LeftBottom":{"X":953,"Y":327}}},{"Name":"税额","Value":"30.86","Polygon":{"LeftTop":{"X":1100,"Y":309},"RightTop":{"X":1200,"Y":309},"RightBottom":{"X":1200,"Y":327},"LeftBottom":{"X":1100,"Y":327}}},{"Name":"货物或应税劳务、服务名称","Value":"*运输服务*客运服务费","Polygon":{"LeftTop":{"X":44,"Y":335},"RightTop":{"X":217,"Y":335},"RightBottom":{"X":217,"Y":356},"LeftBottom":{"X":44,"Y":356}}},{"Name":"金额","Value":"-26.60","Polygon":{"LeftTop":{"X":865,"Y":335},"RightTop":{"X":916,"Y":335},"RightBottom":{"X":916,"Y":353},"LeftBottom":{"X":865,"Y":353}}},{"Name":"税率","Value":"3%","Polygon":{"LeftTop":{"X":953,"Y":333},"RightTop":{"X":979,"Y":333},"RightBottom":{"X":979,"Y":352},"LeftBottom":{"X":953,"Y":352}}},{"Name":"税额","Value":"-0.80","Polygon":{"LeftTop":{"X":1105,"Y":334},"RightTop":{"X":1200,"Y":334},"RightBottom":{"X":1200,"Y":352},"LeftBottom":{"X":1105,"Y":352}}},{"Name":"合计金额","Value":"¥1001.99","Polygon":{"LeftTop":{"X":836,"Y":500},"RightTop":{"X":916,"Y":500},"RightBottom":{"X":916,"Y":518},"LeftBottom":{"X":836,"Y":518}}},{"Name":"合计税额","Value":"¥30.06","Polygon":{"LeftTop":{"X":1086,"Y":499},"RightTop":{"X":1202,"Y":499},"RightBottom":{"X":1202,"Y":517},"LeftBottom":{"X":1086,"Y":517}}},{"Name":"价税合计(大写)","Value":"壹仟零叁拾贰圆零伍分","Polygon":{"LeftTop":{"X":355,"Y":533},"RightTop":{"X":531,"Y":533},"RightBottom":{"X":531,"Y":553},"LeftBottom":{"X":355,"Y":553}}},{"Name":"小写金额","Value":"¥1032.05","Polygon":{"LeftTop":{"X":971,"Y":533},"RightTop":{"X":1054,"Y":533},"RightBottom":{"X":1054,"Y":552},"LeftBottom":{"X":971,"Y":552}}},{"Name":"销售方地址、电话","Value":"北京市海淀区唐家岭北环路6号院1号楼C座四层408010-83456275","Polygon":{"LeftTop":{"X":206,"Y":629},"RightTop":{"X":645,"Y":629},"RightBottom":{"X":645,"Y":646},"LeftBottom":{"X":206,"Y":646}}},{"Name":"销售方开户行及账号","Value":"招商银行股份有限公司北京东三环支行110936504210806","Polygon":{"LeftTop":{"X":206,"Y":654},"RightTop":{"X":638,"Y":654},"RightBottom":{"X":638,"Y":671},"LeftBottom":{"X":206,"Y":671}}},{"Name":"收款人","Value":"杜洪亮","Polygon":{"LeftTop":{"X":152,"Y":685},"RightTop":{"X":207,"Y":685},"RightBottom":{"X":207,"Y":705},"LeftBottom":{"X":152,"Y":705}}},{"Name":"复核","Value":"赵笑林","Polygon":{"LeftTop":{"X":448,"Y":685},"RightTop":{"X":503,"Y":685},"RightBottom":{"X":503,"Y":705},"LeftBottom":{"X":448,"Y":705}}},{"Name":"开票人","Value":"于秋红","Polygon":{"LeftTop":{"X":713,"Y":683},"RightTop":{"X":767,"Y":683},"RightBottom":{"X":767,"Y":703},"LeftBottom":{"X":713,"Y":703}}},{"Name":"是否有纸质全电票标记","Value":"0"},{"Name":"省","Value":"北京市"},{"Name":"是否有公司印章","Value":"1"},{"Name":"发票消费类型","Value":"服务"},{"Name":"发票类型","Value":"增值税电子普通发票"},{"Name":"市","Value":""},{"Name":"购买方地址、电话","Value":""},{"Name":"购买方开户行及账号","Value":""},{"Name":"打印发票代码","Value":""},{"Name":"打印发票号码","Value":""},{"Name":"备注","Value":""},{"Name":"联次","Value":""},{"Name":"是否代开","Value":""},{"Name":"成品油标志","Value":""},{"Name":"是否有销项负数标记","Value":""},{"Name":"印章","Value":""},{"Name":"服务类型","Value":""},{"Name":"通行费标志","Value":""},{"Name":"车船税","Value":""},{"Name":"车牌号","Value":""},{"Name":"类型","Value":""},{"Name":"通行日期起","Value":""},{"Name":"通行日期止","Value":""},{"Name":"发票联名","Value":""},{"Name":"全电号码","Value":""}],"Items":[{"LineNo":"1","Name":"*运输服务*客运服务费","Spec":"无","Unit":"次","Quantity":"1","UnitPrice":"1028.59","AmountWithoutTax":"1028.59","TaxRate":"3%","TaxAmount":"30.86","TaxClassifyCode":"","VehicleType":"","VehicleBrand":"","DeparturePlace":"","ArrivalPlace":"","TransportItemsName":"","ConstructionPlace":"","ConstructionName":""},{"LineNo":"2","Name":"*运输服务*客运服务费","Spec":"","Unit":"","Quantity":"","UnitPrice":"","AmountWithoutTax":"-26.60","TaxRate":"3%","TaxAmount":"-0.80","TaxClassifyCode":"","VehicleType":"","VehicleBrand":"","DeparturePlace":"","ArrivalPlace":"","TransportItemsName":"","ConstructionPlace":"","ConstructionName":""}],"PdfPageSize":0,"Angle":0.10505723,"RequestId":"5685eac3-8228-4c29-9339-20a72c393153"}
*/
后面我们再根据具体的返回字段取值并赋值给发票信息对象 SysInvoice 最后插入数据库即可。
到这里,关于腾讯云OCR的详细介绍以及在线调试操作,最后接入企业应用系统的操作就完成了,整个接入企业应用系统的操作比较简单,整体归纳下来按照以下步骤操作就可以了:
1.登录腾讯云OCR文字识别控制台:https://console.cloud.tencent.com/ocr/overview;
2.在腾讯云OCR文字识别控制台的服务列表,输入你想要调用的接口并勾选查询,在查询到的接口列表后面,点击【在线调试】进入在线调试页面;
3.在在线调试页面,选择【代码示例】,切换接入方式 SDK,选择开发语言,复制 main 函数代码内容到本地项目具体调用腾讯云OCR 文字识别接口的代码逻辑处;
4.在AIP密钥管理页面:https://console.cloud.tencent.com/cam/capi 新建密钥,并替换main 函数代码中的 SecretId 和 SecretKey
5.传入参数后就可以成功调用腾讯云OCR文字识别接口并获取返回数据。
在当今时代,对企业而言,数字化已然成为不可逆转的必然趋势。在这样的大背景下,传统的工作模式不可避免地会对企业的数字化发展形成阻碍。
就拿发票信息处理来说,发票录入包含大概10 - 20个字段。以往依靠人工录入一张发票,耗时最少也要5分钟。然而,当企业接入腾讯云OCR发票识别技术后,情况发生了巨大的改变。一张发票从上传到完成入库操作,整个过程能够在1秒以内搞定。这一变革所带来的效率提升相当惊人,与传统人工录入方式相比,效率可以提高300倍之多。而且,腾讯云OCR文字识别技术在识别精确率方面表现更为出色,它不会像人工录入那样受到人员因素的干扰。
如此一来,企业在后续运营过程中,就能够以这些准确、高效的票据信息为基础,深入分析并总结出每个月、每个季度以及每年的成本支出、收益情况以及利润状况等信息。这些详尽的数据犹如一盏明灯,能够为企业未来的发展方向提供明确的指引。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。