您的位置:IT爆料网 > 互联网

基于PaddleOCR实现AI发票识别的Asp.net Core应用

发布时间:2023-01-09 21:55:20  来源:互联网     背景:

简要介绍

用户批量上传需要识别的照片,上传成功后,系统会启动Hangfire后台Job开始调用PaddleOCR服务返回结果,这个过程有点类似微服务的架构模型。

PaddleOCR

PaddleOCR是百度AI团队开源的一个项目,应该是目前所有免费开源OCR项目中识别效果最好的,具体可以通过PaddleOCR了解,如果你没有Python的开发经验,可能在环境部署上会遇到一些问题,但几乎都能找到解决方案。

Demo%20https://razor.i247365.net/invoices/index

用户批量上传要识别的文件,由于我的虚拟机性能非常差,所以才能先上传系统后台自动识别

系统识别完成后会自动通知用户并修改状态,用户预览识别的结果

运行环境.net 5.0>Python 3.7>ASP.NET Core Razor Page Application 5.0 源代码分支(featuresinvoice_ocr)RazorPageCleanArchitecturefeaturesinvoice_ocrPaddleOCR Web API (CentOS 阿里云主机) PaddlePaddle/PaddleOCRHangfire Dashboard HangfireIO/Hangfire技术栈ASP.NET CoreJquery/JavascriptEasyUIPython安装PaddleOCR环境

经测试PaddleOCR可在glibc 2.23上运行,您也可以测试其他glibc版本或安装glic 2.23

PaddleOCR 工作环境

PaddlePaddle 2.0.0python3.7glibc 2.23cuDNN 7.6+ (GPU)

建议使用我们提供的docker运行PaddleOCR,有关docker、nvidia-docker使用请参考链接。

如您希望使用 mac 或 windows直接运行预测代码,可以从第2步开始执行。

1. (建议)准备docker环境。第一次使用这个镜像,会自动下载该镜像,请耐心等待。# 切换到工作目录下
cd /home/Projects
# 首次运行需创建一个docker容器,再次运行时不需要运行当前命令
# 创建一个名字为ppocr的docker容器,并将当前目录映射到容器的/paddle目录下

如果您希望在CPU环境下使用docker,使用docker而不是nvidia-docker创建docker
sudo docker run --name ppocr -v $PWD:/paddle --network=host -it paddlepaddle/paddle:latest-dev-cuda10.1-cudnn7-gcc82 /bin/bash

如果使用CUDA10,请运行以下命令创建容器,设置docker容器共享内存shm-size为64G,建议设置32G以上
sudo nvidia-docker run --name ppocr -v $PWD:/paddle --shm-size=64G --network=host -it paddlepaddle/paddle:latest-dev-cuda10.1-cudnn7-gcc82 /bin/bash

您也可以访问[DockerHub](https://hub.docker.com/r/paddlepaddle/paddle/tags/)获取与您机器适配的镜像。

# ctrl+P+Q可退出docker 容器,重新进入docker 容器使用如下命令
sudo docker container exec -it ppocr /bin/bash2. 安装PaddlePaddle 2.0pip3 install --upgrade pip

如果您的机器安装的是CUDA9或CUDA10,请运行以下命令安装
python3 -m pip install paddlepaddle-gpu==2.0.0 -i https://mirror.baidu.com/pypi/simple

如果您的机器是CPU,请运行以下命令安装

python3 -m pip install paddlepaddle==2.0.0 -i https://mirror.baidu.com/pypi/simple

更多的版本需求,请参照[安装文档](https://www.paddlepaddle.org.cn/install/quick)中的说明进行操作。3. 克隆PaddleOCR repo代码【推荐】git clone https://github.com/PaddlePaddle/PaddleOCR

如果因为网络问题无法pull成功,也可选择使用码云上的托管:

git clone https://gitee.com/paddlepaddle/PaddleOCR

注:码云托管代码可能无法实时同步本github项目更新,存在3~5天延时,请优先使用推荐方式。4. 安装第三方库cd PaddleOCR
pip3 install -r requirements.txt

**如果有问题可以留言,我会帮你处理**

## 重点代码分析
httpClient调用PaddleOCR API
开始自动失败重试策略
```js
services.AddHttpClient("ocr", c =>
{
c.BaseAddress = new Uri("https://paddleocr.i247365.net/predict/ocr_system");
c.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
})
.AddTransientHttpErrorPolicy(policy => policy.WaitAndRetryAsync(3, _ => TimeSpan.FromMilliseconds(1000))); ;

public void Recognition(int id)
{
using (var client = _httpClientFactory.CreateClient("ocr"))
{
var invoice = _context.Invoices.Find(id);
var imgfile = Path.Combine(Directory.GetCurrentDirectory(), invoice.AttachmentUrl);
var bytes = File.ReadAllBytes(imgfile);
string base64string = Convert.ToBase64String(bytes);
var response = client.PostAsJsonAsync("", new { images = new string[] { base64string } }).Result;
}
Console.WriteLine($"{id}, completed.");
}

解析发票信息,目前还是使用比较笨的方法,通过正则表达式来匹配需要的字段,比如发票金额,开票日期,发票号码等等,因为这是免费的并没有提供像收费服务那样更智能的匹配,这里我想只要有足够的数据,应该也可以通过自己训练实现更智能的识别。所以我留了Label字段,目的就是先有人工制定好对应的字段栏位,然后通过坐标数据进行训练。

if(response.StatusCode== System.Net.HttpStatusCode.OK)
{
var result = response.Content.ReadAsStringAsync().Result;
var ocr_result = JsonSerializer.Deserialize<ocr_result>(result);
var ocr_status = "";
invoice.Status = "Done";
invoice.Result = ocr_result.status;
if (ocr_result.status== "000")
{
foreach(var collection in ocr_result.results)
{
foreach(var item in collection)
{
var rawdata = new InvoiceRawData()
{
Confidence=item.confidence,
InvoiceId=id,
Text=item.text,
Text_Region= JsonSerializer.Serialize(item.text_region)
};
if (item.text.Contains("发票号码"))
{
var regex = new Regex("\d*$");
var mc = regex.Match(item.text);
if(mc.Success)
{
invoice.InvoiceNo = mc.Value;
}
}
if (item.text.Contains("开票日期"))
{
var regex = new Regex("\d{4}年\d{2}月\d{2}日");
var mc = regex.Match(item.text);
if (mc.Success)
{
invoice.InvoiceDate = Convert.ToDateTime(mc.Value.Replace("年","/").Replace("月", "/").Replace("日", ""));
}
}
if (item.text.Contains("%"))
{
var regex = new Regex("^\d*.\d*");
var mc = regex.Match(item.text);
if (mc.Success)
{
invoice.TaxRate = decimal.Parse(mc.Value);
}
}
if (item.text.Contains("¥"))
{
var regex = new Regex("\d.\d*");
var mc = regex.Match(item.text);
if (mc.Success)
{
invoice.Amount = decimal.Parse(mc.Value);
}
}
_context.InvoiceRawDatas.Add(rawdata);
}
}
ocr_status = ocr_result.status;

}
_context.SaveChangesAsync(default).Wait();
_hubContext.Clients.All.SendAsync(SignalR.OCRTaskCompleted, new { invoiceNo = invoice.InvoiceNo });



}

Canvas 画框标注识别结果

data.map((item,index) => {
$('#rawdata_table > tbody').append(`

${index + 1}${item.Text} 

`);
var points = JSON.parse(item.Text_Region);
ctx.lineWidth = "5";
ctx.strokeStyle = "#00ff00";
ctx.textAlign = 'left';
ctx.textBaseline = 'top';
ctx.fillStyle = "#ff0000";
ctx.font = "bold 13px verdana, sans-serif ";
ctx.fillText(item.Text, points[0][0], points[0][1]-15);
ctx.beginPath();
ctx.moveTo(points[0][0], points[0][1]);
ctx.lineTo(points[1][0], points[1][1]);
ctx.lineTo(points[2][0], points[2][1]);
ctx.lineTo(points[3][0], points[3][1]);
ctx.closePath();
ctx.stroke();
});

是不是很简单,很酷

最后

Give a Star! ⭐

If you like or are using this project please give it a star. Thanks!

RazorPageCleanArchitecturefeaturesinvoice_ocr:https://github.com/neozhu/RazorPageCleanArchitecture

 


本文标题:基于PaddleOCR实现AI发票识别的Asp.net Core应用 - 互联网
本文地址:www.itbaoliao.com/hlw/19445.html

返回网站首页

本文评论
中国结婚商城网开业酬宾百万抽奖盛典圆满落幕
经过一个多月的精心筹备,昨天(9月26日)下午,由中国婚博会旗下电子商务网站中国结婚商城主办的“中国结婚商城开业酬宾抽奖盛典”暨“2009秋季结婚时尚新品体验Party”在北京市红星美凯龙(北沙滩桥店)圆满落下帷幕。活动现场...
日期:10-10
苹果Find My Friends应用上架:可跟踪家人位置
【搜狐IT消息】北京时间10月13日消息,《移动新发现》今日报道,苹果随iOS 5一起推出的LBS应用Find My Friends(查找我的朋友)现已在iTunes Store上架,用户可免费下载,中文版也已同步上架。该应用要求使用iO...
日期:11-10
图文:易事特董事长何思模介绍年底工作计划
易事特电源有限公司董事长何思模(腾讯科技讯)腾讯科技讯(娄池)6月5日消息,创新中国管理模式——2010年金蝶明珠会理事大会宣布成立以“无远弗届,宁静致远”为理念的金蝶明珠会,全国人大常委会副委员长、民建中央主席陈昌...
日期:12-27
百度高管称未来6个月将斥资千万元投资网页游戏
百度于今年1月正式成立游戏事业部(TechWeb配图)网易科技讯 11月26日消息,百度游戏事业部总经理魏洪蕊今日接受路透社采访时透露,将在未来6个月内斥资至少千万元人民币战略投资网页游戏公司。百度目前正积极拓展新的收入渠道,并于今...
日期:01-03
奇迹暖暖小羊的职业是什么 奇迹大陆问答答案大全
奇迹暖暖奇迹大陆问答活动已经迎来了好几期了,这次活动即将结束,大家都拿到自己想要的部件没,如果还没有,小编为大家带来了问答活动答案大全,希望可以帮到大家。...
日期:12-23
低配HTC Desire 820s或搭载64位MT6572处理器
此前曾经传出HTCDesire 820会有低配版推出的消息,而现在爆料大神@evleaks则在微博上披露了进一步的信息,声称该机的型号为HTC Desire 820s,配备的是联发科MTK 6572八核处理器,拥有2GB内存和16GB存储容...
日期:12-17
lol战争学院的荣耀4月活动地址汇总 活动玩法攻略
lol战争学院的荣耀4月地址 lol4月战争学院的荣耀官网地址,LOL战争荣耀学院活动跟你的5级成就英雄有关,这是个福利活动,5级成就英雄越多,领到的福利就越多。...
日期:09-19
小米m3怎么样?详细硬件配置与价格全曝光
小米m3配置与价格全曝光Q:小米m3怎么样?小米m3配置如何?A:目前距离小米m3正式上市出售的时间还有半个月,近日小米公司董事长雷军已经在自己的微博中表示小米m3将在10月15日正式开启第一轮购买。现在很多人都在考虑要不要入手小米m...
日期:01-07
56网《美女斗秀场》大热 人气收入双丰收
贴片广告时长越来越没有节操,视频网站如何创造新的收入模式?最近,中国领先的视频分享网站56网(56.com)打造的国内首档网络美女真人秀节目《美女斗秀场》,与旗下在线演艺平台我秀(woxiu.com)深度联动,拉动了一把“美女经...
日期:12-16
中国铁路总公司辟谣:12306网站未发生用户信息泄漏
6月14日消息,针对网传“12306数据疑似泄漏”一事,中国铁路总公司官方微博发文称,经核查,该网站未发生用户信息泄漏,网传信息与铁路12306网站无关。...
日期:01-05
收到货的“尾款人”,你的定金退了吗?
买买买的狂欢过后,等待消费者和商家的种种考验正在上演,如何让“退款人”也能愉快挽回“冲动”后的损失,需要商家和消费者的共同努力。...
日期:10-20
市场监管总局:“双十一”禁止“先提价后打折”
市场监管总局发文表示,“双十一”网络集中促销活动在即。...
日期:11-16
郭广昌调侃马云:和王菲唱歌、搞空手道 是从火星来地球度假的
9月29日下午消息,在2020中国绿公司年会上,复星国际董事长郭广昌调侃马云是从火星来地球度假的。郭广昌称,今年大家的日子不好过,尤其是中国的企业家,大多数都活得像苦行僧,大多数企业家活得像苦行僧,很少度假,基本上没什么爱好,工作就是快乐...
日期:12-22
我乐网CEO :周娟访谈 互联网巾帼不让须眉
我乐网(www.56.com)CEO周娟  简单?不简单。  周娟说,她的经历很简单:  老家在江西临川,王安石的故乡,不过自小理科很棒;  高中时代开始上寄宿的高中,长年在外,个性比较独立;  后来考上了中国科技大学,学计算机...
日期:12-03
“小李不哭”成热词 网友为莱昂纳多打气
3日中午,第86届奥斯卡颁奖礼在洛杉矶杜比剧院闭幕。墨西哥导演阿方索·卡隆执导的《地心引力》成为最大赢家,在10项提名中,最后获得包括最佳导演在内的7项大奖。马修·麦康纳首次问鼎最佳男主角,已经4次陪跑的莱昂纳多再次错失小金人。...
日期:11-19
OnLive小软件大雄心:让iPad运行Windows
OnLive软件 【搜狐IT消息】北京时间2月24日消息,《移动新发现》今日报道,《纽约时报》今天刊文,谈及一家名为OnLive的企业,它推出新的服务OnLive Desktop Plus,这是一款程序,能...
日期:11-26
中国广电5G今日正式放号 5G套餐共七档118元起
今日,中国广电5G网络服务正式与大家见面,这意味着,拿到5G牌照三年后,中国广电192号段即将正式向公众放号。...
日期:12-19
《浴血长空》细数二战史上的著名战斗机
纪念反法西斯战争胜利70周年之际,《浴血长空》即将开启封测。致敬挥洒热血誓死保家卫国的革命前辈,回顾历史,珍惜和平!《浴血长空》将带你回到70多年前那个战火纷飞的年代,亲身体...
日期:01-03
外观设计简约 联想B465笔记本报2650元
作为国内笔记本方面的龙头老大,这款联想B465cA-NTH采用了棱角分明的造型,简约、硬朗的设计风格,配置方面采用了AMD N330双核处理器,显卡方面搭载了1GB显存的AMD 6470M独立显卡,性能不错,目前该机的价格仅2650元,感兴...
日期:11-22
三七互娱入选BOSS直聘最受人才关注公司TOP100
近日,各大招聘平台陆续对上半年企业招聘情况进行盘点,移动互联网招聘平台BOSS直聘发布《2020上半年最受人才关注公司TOP100》榜单,凭借强大的行业影响力以及发展潜力,三七互娱与阿里巴巴、腾讯、百度等企业共同上榜,成为最受人才关注的中国...
日期:12-21