日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 知識百科

基于PaddleOCR實現AI發票識別的Asp.net Core應用

來源: 責編: 時間:2023-08-07 16:29:52 300觀看
導讀 簡要介紹用戶批量上傳需要識別的照片,上傳成功后,系統會啟動Hangfire后臺Job開始調用PaddleOCR服務返回結果,這個過程有點類似微服務的架構模型。系統識別完成后會自動通知

簡要介紹E1u28資訊網——每日最新資訊28at.com

用戶批量上傳需要識別的照片,上傳成功后,系統會啟動Hangfire后臺Job開始調用PaddleOCR服務返回結果,這個過程有點類似微服務的架構模型。E1u28資訊網——每日最新資訊28at.com

E1u28資訊網——每日最新資訊28at.com

系統識別完成后會自動通知用戶并修改狀態,用戶預覽識別的結果E1u28資訊網——每日最新資訊28at.com

E1u28資訊網——每日最新資訊28at.com

運行環境 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環境E1u28資訊網——每日最新資訊28at.com

經測試PaddleOCR可在glibc 2.23上運行,您也可以測試其他glibc版本或安裝glic 2.23E1u28資訊網——每日最新資訊28at.com

PaddleOCR 工作環境E1u28資訊網——每日最新資訊28at.com

PaddlePaddle 2.0.0python3.7glibc 2.23cuDNN 7.6+ (GPU)E1u28資訊網——每日最新資訊28at.com

建議使用我們提供的docker運行PaddleOCR,有關docker、nvidia-docker使用請參考鏈接。E1u28資訊網——每日最新資訊28at.com

如您希望使用 mac 或 windows直接運行預測代碼,可以從第2步開始執行。E1u28資訊網——每日最新資訊28at.com

1. (建議)準備docker環境。第一次使用這個鏡像,會自動下載該鏡像,請耐心等待。# 切換到工作目錄下E1u28資訊網——每日最新資訊28at.com
cd /home/ProjectsE1u28資訊網——每日最新資訊28at.com
# 首次運行需創建一個docker容器,再次運行時不需要運行當前命令E1u28資訊網——每日最新資訊28at.com
# 創建一個名字為ppocr的docker容器,并將當前目錄映射到容器的/paddle目錄下E1u28資訊網——每日最新資訊28at.com
E1u28資訊網——每日最新資訊28at.com
如果您希望在CPU環境下使用docker,使用docker而不是nvidia-docker創建dockerE1u28資訊網——每日最新資訊28at.com
sudo docker run --name ppocr -v $PWD:/paddle --network=host -it paddlepaddle/paddle:latest-dev-cuda10.1-cudnn7-gcc82 /bin/bashE1u28資訊網——每日最新資訊28at.com
E1u28資訊網——每日最新資訊28at.com
如果使用CUDA10,請運行以下命令創建容器,設置docker容器共享內存shm-size為64G,建議設置32G以上E1u28資訊網——每日最新資訊28at.com
sudo nvidia-docker run --name ppocr -v $PWD:/paddle --shm-size=64G --network=host -it paddlepaddle/paddle:latest-dev-cuda10.1-cudnn7-gcc82 /bin/bashE1u28資訊網——每日最新資訊28at.com
E1u28資訊網——每日最新資訊28at.com
您也可以訪問[DockerHub](https://hub.docker.com/r/paddlepaddle/paddle/tags/)獲取與您機器適配的鏡像。E1u28資訊網——每日最新資訊28at.com
E1u28資訊網——每日最新資訊28at.com
# ctrl+P+Q可退出docker 容器,重新進入docker 容器使用如下命令E1u28資訊網——每日最新資訊28at.com
sudo docker container exec -it ppocr /bin/bash2. 安裝PaddlePaddle 2.0pip3 install --upgrade pipE1u28資訊網——每日最新資訊28at.com
E1u28資訊網——每日最新資訊28at.com
如果您的機器安裝的是CUDA9或CUDA10,請運行以下命令安裝E1u28資訊網——每日最新資訊28at.com
python3 -m pip install paddlepaddle-gpu==2.0.0 -i https://mirror.baidu.com/pypi/simpleE1u28資訊網——每日最新資訊28at.com
E1u28資訊網——每日最新資訊28at.com
如果您的機器是CPU,請運行以下命令安裝E1u28資訊網——每日最新資訊28at.com
E1u28資訊網——每日最新資訊28at.com
python3 -m pip install paddlepaddle==2.0.0 -i https://mirror.baidu.com/pypi/simpleE1u28資訊網——每日最新資訊28at.com
E1u28資訊網——每日最新資訊28at.com
更多的版本需求,請參照[安裝文檔](https://www.paddlepaddle.org.cn/install/quick)中的說明進行操作。3. 克隆PaddleOCR repo代碼【推薦】git clone https://github.com/PaddlePaddle/PaddleOCRE1u28資訊網——每日最新資訊28at.com
E1u28資訊網——每日最新資訊28at.com
如果因為網絡問題無法pull成功,也可選擇使用碼云上的托管:E1u28資訊網——每日最新資訊28at.com
E1u28資訊網——每日最新資訊28at.com
git clone https://gitee.com/paddlepaddle/PaddleOCRE1u28資訊網——每日最新資訊28at.com
E1u28資訊網——每日最新資訊28at.com
注:碼云托管代碼可能無法實時同步本github項目更新,存在3~5天延時,請優先使用推薦方式。4. 安裝第三方庫cd PaddleOCRE1u28資訊網——每日最新資訊28at.com
pip3 install -r requirements.txtE1u28資訊網——每日最新資訊28at.com
E1u28資訊網——每日最新資訊28at.com
**如果有問題可以留言,我會幫你處理**E1u28資訊網——每日最新資訊28at.com
E1u28資訊網——每日最新資訊28at.com
## 重點代碼分析E1u28資訊網——每日最新資訊28at.com
httpClient調用PaddleOCR APIE1u28資訊網——每日最新資訊28at.com
開始自動失敗重試策略E1u28資訊網——每日最新資訊28at.com
```jsE1u28資訊網——每日最新資訊28at.com
services.AddHttpClient("ocr", c =>E1u28資訊網——每日最新資訊28at.com
{E1u28資訊網——每日最新資訊28at.com
c.BaseAddress = new Uri("https://paddleocr.i247365/predict/ocr_system");E1u28資訊網——每日最新資訊28at.com
c.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));E1u28資訊網——每日最新資訊28at.com
})E1u28資訊網——每日最新資訊28at.com
.AddTransientHttpErrorPolicy(policy => policy.WaitAndRetryAsync(3, _ => TimeSpan.FromMilliseconds(1000))); ;E1u28資訊網——每日最新資訊28at.com
E1u28資訊網——每日最新資訊28at.com
public void Recognition(int id)E1u28資訊網——每日最新資訊28at.com
{E1u28資訊網——每日最新資訊28at.com
using (var client = _httpClientFactory.CreateClient("ocr"))E1u28資訊網——每日最新資訊28at.com
{E1u28資訊網——每日最新資訊28at.com
var invoice = _context.Invoices.Find(id);E1u28資訊網——每日最新資訊28at.com
var imgfile = Path.Combine(Directory.GetCurrentDirectory(), invoice.AttachmentUrl);E1u28資訊網——每日最新資訊28at.com
var bytes = File.ReadAllBytes(imgfile);E1u28資訊網——每日最新資訊28at.com
string base64string = Convert.ToBase64String(bytes);E1u28資訊網——每日最新資訊28at.com
var response = client.PostAsJsonAsync("", new { images = new string[] { base64string } }).Result;E1u28資訊網——每日最新資訊28at.com
}E1u28資訊網——每日最新資訊28at.com
Console.WriteLine($"{id}, completed.");E1u28資訊網——每日最新資訊28at.com
}E1u28資訊網——每日最新資訊28at.com

解析發票信息,目前還是使用比較笨的方法,通過正則表達式來匹配需要的字段,比如發票金額,開票日期,發票號碼等等,因為這是免費的并沒有提供像收費服務那樣更智能的匹配,這里我想只要有足夠的數據,應該也可以通過自己訓練實現更智能的識別。所以我留了Label字段,目的就是先有人工制定好對應的字段欄位,然后通過坐標數據進行訓練。E1u28資訊網——每日最新資訊28at.com

if(response.StatusCode== System.Net.HttpStatusCode.OK)E1u28資訊網——每日最新資訊28at.com
{E1u28資訊網——每日最新資訊28at.com
var result = response.Content.ReadAsStringAsync().Result;E1u28資訊網——每日最新資訊28at.com
var ocr_result = JsonSerializer.Deserialize<ocr_result>(result);E1u28資訊網——每日最新資訊28at.com
var ocr_status = "";E1u28資訊網——每日最新資訊28at.com
invoice.Status = "Done";E1u28資訊網——每日最新資訊28at.com
invoice.Result = ocr_result.status;E1u28資訊網——每日最新資訊28at.com
if (ocr_result.status== "000")E1u28資訊網——每日最新資訊28at.com
{E1u28資訊網——每日最新資訊28at.com
foreach(var collection in ocr_result.results)E1u28資訊網——每日最新資訊28at.com
{E1u28資訊網——每日最新資訊28at.com
foreach(var item in collection)E1u28資訊網——每日最新資訊28at.com
{E1u28資訊網——每日最新資訊28at.com
var rawdata = new InvoiceRawData()E1u28資訊網——每日最新資訊28at.com
{E1u28資訊網——每日最新資訊28at.com
Confidence=item.confidence,E1u28資訊網——每日最新資訊28at.com
InvoiceId=id,E1u28資訊網——每日最新資訊28at.com
Text=item.text,E1u28資訊網——每日最新資訊28at.com
Text_Region= JsonSerializer.Serialize(item.text_region)E1u28資訊網——每日最新資訊28at.com
};E1u28資訊網——每日最新資訊28at.com
if (item.text.Contains("發票號碼"))E1u28資訊網——每日最新資訊28at.com
{E1u28資訊網——每日最新資訊28at.com
var regex = new Regex("/d*$");E1u28資訊網——每日最新資訊28at.com
var mc = regex.Match(item.text);E1u28資訊網——每日最新資訊28at.com
if(mc.Success)E1u28資訊網——每日最新資訊28at.com
{E1u28資訊網——每日最新資訊28at.com
invoice.InvoiceNo = mc.Value;E1u28資訊網——每日最新資訊28at.com
}E1u28資訊網——每日最新資訊28at.com
}E1u28資訊網——每日最新資訊28at.com
if (item.text.Contains("開票日期"))E1u28資訊網——每日最新資訊28at.com
{E1u28資訊網——每日最新資訊28at.com
var regex = new Regex("/d{4}年/d{2}月/d{2}日");E1u28資訊網——每日最新資訊28at.com
var mc = regex.Match(item.text);E1u28資訊網——每日最新資訊28at.com
if (mc.Success)E1u28資訊網——每日最新資訊28at.com
{E1u28資訊網——每日最新資訊28at.com
invoice.InvoiceDate = Convert.ToDateTime(mc.Value.Replace("年","/").Replace("月", "/").Replace("日", ""));E1u28資訊網——每日最新資訊28at.com
}E1u28資訊網——每日最新資訊28at.com
}E1u28資訊網——每日最新資訊28at.com
if (item.text.Contains("%"))E1u28資訊網——每日最新資訊28at.com
{E1u28資訊網——每日最新資訊28at.com
var regex = new Regex("^/d*./d*");E1u28資訊網——每日最新資訊28at.com
var mc = regex.Match(item.text);E1u28資訊網——每日最新資訊28at.com
if (mc.Success)E1u28資訊網——每日最新資訊28at.com
{E1u28資訊網——每日最新資訊28at.com
invoice.TaxRate = decimal.Parse(mc.Value);E1u28資訊網——每日最新資訊28at.com
}E1u28資訊網——每日最新資訊28at.com
}E1u28資訊網——每日最新資訊28at.com
if (item.text.Contains("¥"))E1u28資訊網——每日最新資訊28at.com
{E1u28資訊網——每日最新資訊28at.com
var regex = new Regex("/d./d*");E1u28資訊網——每日最新資訊28at.com
var mc = regex.Match(item.text);E1u28資訊網——每日最新資訊28at.com
if (mc.Success)E1u28資訊網——每日最新資訊28at.com
{E1u28資訊網——每日最新資訊28at.com
invoice.Amount = decimal.Parse(mc.Value);E1u28資訊網——每日最新資訊28at.com
}E1u28資訊網——每日最新資訊28at.com
}E1u28資訊網——每日最新資訊28at.com
_context.InvoiceRawDatas.Add(rawdata);E1u28資訊網——每日最新資訊28at.com
}E1u28資訊網——每日最新資訊28at.com
}E1u28資訊網——每日最新資訊28at.com
ocr_status = ocr_result.status;E1u28資訊網——每日最新資訊28at.com
E1u28資訊網——每日最新資訊28at.com
}E1u28資訊網——每日最新資訊28at.com
_context.SaveChangesAsync(default).Wait();E1u28資訊網——每日最新資訊28at.com
_hubContext.Clients.All.SendAsync(SignalR.OCRTaskCompleted, new { invoiceNo = invoice.InvoiceNo });E1u28資訊網——每日最新資訊28at.com
E1u28資訊網——每日最新資訊28at.com
E1u28資訊網——每日最新資訊28at.com
E1u28資訊網——每日最新資訊28at.com
}E1u28資訊網——每日最新資訊28at.com

Canvas 畫框標注識別結果E1u28資訊網——每日最新資訊28at.com

E1u28資訊網——每日最新資訊28at.com

data.map((item,index) => {E1u28資訊網——每日最新資訊28at.com
$('#rawdata_table > tbody').append(`E1u28資訊網——每日最新資訊28at.com

${index + 1}${item.Text} E1u28資訊網——每日最新資訊28at.com

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

是不是很簡單,很酷E1u28資訊網——每日最新資訊28at.com

最后E1u28資訊網——每日最新資訊28at.com

Give a Star! ?E1u28資訊網——每日最新資訊28at.com

If you like or are using this project please give it a star. Thanks!E1u28資訊網——每日最新資訊28at.com

RazorPageCleanArchitecturefeaturesinvoice_ocr:https://github.com/neozhu/RazorPageCleanArchitectureE1u28資訊網——每日最新資訊28at.com

 E1u28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-119-2150-0.html基于PaddleOCR實現AI發票識別的Asp.net Core應用

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 終于有人把監督學習講明白了

下一篇: 如何選擇容器注冊表,這里給出九個選項 譯文

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
一区二区视频免费完整版观看| 欧美激情按摩| 99re在线精品| 亚洲视频碰碰| 欧美一区二区私人影院日本| 久久er精品视频| 麻豆精品在线视频| 欧美精品aa| 国产精品专区一| 精品成人a区在线观看| 亚洲经典在线看| 99国产精品视频免费观看一公开| 这里只有精品视频在线| 久久成人18免费网站| 欧美精品在线一区| 国产精品亚洲一区| 亚洲国产人成综合网站| 亚洲午夜一二三区视频| 久久久久久一区| 欧美精品免费视频| 国产日韩在线亚洲字幕中文| 亚洲国产欧美一区二区三区同亚洲| 亚洲视频在线视频| 久久综合九色综合欧美狠狠| 欧美午夜电影在线| 在线观看亚洲视频| 亚洲欧洲av一区二区| 欧美国产日产韩国视频| 国产日韩在线看| 亚洲免费观看在线观看| 久久精品一本| 国产精品久久久对白| 亚洲国产精品悠悠久久琪琪| 性伦欧美刺激片在线观看| 欧美激情女人20p| 国产在线乱码一区二区三区| 亚洲视频在线观看视频| 美女在线一区二区| 国产欧美日本一区二区三区| av成人动漫| 牛夜精品久久久久久久99黑人| 国产精品视频xxx| 亚洲精选一区| 久久综合一区二区| 国产精品一区二区三区观看| 日韩网站在线观看| 另类春色校园亚洲| 国产日韩成人精品| 中文日韩电影网站| 欧美国产亚洲精品久久久8v| 国产一区二区中文字幕免费看| 亚洲天堂网在线观看| 欧美日本网站| 亚洲激情图片小说视频| 久久精品在线播放| 国产欧美日韩亚洲| 亚洲主播在线| 欧美视频在线不卡| 亚洲三级免费| 免费成人av在线看| 一区在线观看| 久久精品国产清高在天天线| 国产精品乱码人人做人人爱| 99精品国产一区二区青青牛奶| 欧美.www| 亚洲国产成人精品女人久久久 | 亚洲成人影音| 久久精品在线播放| 国产真实精品久久二三区| 午夜精品免费在线| 国产精品爽爽爽| 亚洲一区在线直播| 欧美视频在线视频| 一区二区三区日韩在线观看| 欧美精品粉嫩高潮一区二区 | 美女图片一区二区| 影音先锋亚洲视频| 久久一区免费| 亚洲电影天堂av| 欧美成ee人免费视频| 在线观看日韩www视频免费| 久久欧美肥婆一二区| 永久久久久久| 你懂的国产精品永久在线| 亚洲国产合集| 欧美多人爱爱视频网站| 亚洲精品午夜| 欧美日韩精品免费看| 99综合视频| 国产精品久久| 午夜精品影院在线观看| 国产日韩欧美成人| 久久精品国内一区二区三区| 狠狠色狠狠色综合人人| 老司机成人网| 亚洲人成网站在线播| 欧美精品一区二区三区在线播放| 亚洲精品影院| 国产精品大片| 欧美一区观看| 在线成人h网| 欧美大片第1页| 99re66热这里只有精品3直播| 欧美日韩亚洲一区二区三区在线观看| 一级成人国产| 国产精品美女www爽爽爽视频| 亚洲免费在线精品一区| 国产视频不卡| 免费日韩成人| 夜夜嗨av一区二区三区网站四季av | 亚洲精品五月天| 国产精品久久二区二区| 欧美一区二区三区免费在线看| 国产一区欧美| 欧美成人a视频| 中文成人激情娱乐网| 国产欧美一区二区精品性色| 久久久久国内| 日韩视频免费看| 国产精品揄拍一区二区| 久久亚洲私人国产精品va媚药| 亚洲激情偷拍| 国产精品一级二级三级| 久久亚洲国产精品一区二区| 亚洲精品激情| 国产欧美日韩专区发布| 狼狼综合久久久久综合网| aⅴ色国产欧美| 国产亚洲欧美在线| 欧美精品一区二区三区四区 | 欧美日本中文字幕| 欧美一区2区三区4区公司二百| 精品88久久久久88久久久| 欧美日本免费| 欧美在线视频观看免费网站| 亚洲黄色天堂| 国产农村妇女毛片精品久久莱园子| 裸体一区二区| 亚洲男人av电影| 亚洲激情在线激情| 国产欧美日本| 欧美日本亚洲视频| 欧美一区二区精品| 99精品福利视频| 激情欧美国产欧美| 国产精品jizz在线观看美国| 久久性天堂网| 亚洲男人影院| 亚洲理论电影网| 国产一二三精品| 欧美色视频日本高清在线观看| 久久久www成人免费毛片麻豆| 一区二区三区波多野结衣在线观看| 激情欧美一区二区三区在线观看| 欧美色图一区二区三区| 久久久一二三| 性色av一区二区三区红粉影视| 亚洲精品一区二区在线观看| 国产一区二区三区在线观看精品| 欧美日韩激情小视频| 久久一区二区三区国产精品 | 欧美日韩免费在线| 久久久久久免费| 亚洲欧美不卡| 日韩午夜在线| 亚洲高清资源| 国内精品久久久久影院色| 国产精品成人午夜| 欧美国产视频在线| 久久综合九色综合欧美就去吻| 午夜激情综合网| 一区二区三区欧美亚洲| 亚洲人成欧美中文字幕| 1000部国产精品成人观看| 国产一区二区精品久久99| 国产精品电影在线观看| 欧美日韩国产黄| 欧美福利精品| 免费久久精品视频| 久久久久久9| 欧美中文字幕不卡| 午夜视频一区二区| 亚洲一区免费网站| 亚洲视频在线免费观看| 夜夜嗨av一区二区三区| 日韩一级成人av| 亚洲人成网站影音先锋播放| 亚洲成色最大综合在线| 精品动漫av| 精品动漫3d一区二区三区免费版| 国产亚洲欧美日韩日本| 国产日韩一级二级三级| 国产区亚洲区欧美区| 国产欧美精品在线| 国产日韩欧美三区| 国产色综合网| 合欧美一区二区三区| 在线看片日韩| 亚洲激情黄色| 91久久久久| 亚洲精品人人| 夜夜嗨av一区二区三区网站四季av | 亚洲精品视频在线看| 亚洲精品影院在线观看|