最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#?PaddleOCRSharp?OCR進(jìn)行疲勞測試

 更新時間:2024年11月20日 08:25:05   作者:初九之潛龍勿用  
PaddleOCRSharp?是百度飛槳封裝的.NET版本?OCR?dll?類庫,OCR可以將圖像文件中的文本內(nèi)容進(jìn)行識別,下面我們就來看看如何通過它們實(shí)現(xiàn)疲勞測試吧

關(guān)于 PaddleOCRSharp

PaddleOCRSharp 是百度飛槳封裝的.NET版本 OCR dll 類庫,OCR(Optical Character Recognition)工具可以將圖像文件中的文本內(nèi)容進(jìn)行識別,轉(zhuǎn)換成可編輯的文本格式。從而進(jìn)一步進(jìn)行編輯、存儲和分析。

在實(shí)際的使用中,這款工具類庫的確很優(yōu)秀,無論從識別時間還是識別率來說,比較平衡比較令人滿意。

應(yīng)用范例演示

這是我們在實(shí)際應(yīng)用中開發(fā)的一款工具,基于 Windows WinForm 模式,用于識別客戶提供的電子檔案中的文字,并進(jìn)行文字識別存儲及后續(xù)的管理。其主界面運(yùn)行如下:

如圖,工具程序在導(dǎo)入前提供了一些選項(xiàng),包括:

(1)導(dǎo)入類型為圖片數(shù)據(jù)和個人信息(這包括了導(dǎo)入文本到數(shù)據(jù)庫的選項(xiàng))

(2)跳過OCR識別功能,是為了直接導(dǎo)入圖片到數(shù)據(jù)庫,這里我們需要勾選掉以進(jìn)行測試

(3)對已導(dǎo)入數(shù)據(jù)執(zhí)行更新操作,這個選項(xiàng)是純數(shù)據(jù)庫更新操作

(4)不輸出導(dǎo)出報告,是為了減少內(nèi)存占用量,提升性能

快捷設(shè)置可以提供自動設(shè)置4個選項(xiàng)的目的。

工具程序提供了全目錄全文件分析和單目錄分析,全目錄會遍歷該目錄下所有的電子圖片進(jìn)行識別操作,這里我們選擇的是單目錄文件分析(即選擇一個目錄,只查找該目錄下所有的圖片文件),并將最終的分析結(jié)果顯示在報告框中。

在實(shí)際的運(yùn)行應(yīng)用中,我們的檔案有共計幾千萬份圖片,由于環(huán)境及硬件要求,僅提供了三臺配置雷人的臺式機(jī),發(fā)現(xiàn)運(yùn)行幾小時后,PaddleOCRSharp.dll 運(yùn)行崩潰報錯,如下圖:

因此需要對程序進(jìn)行一些改進(jìn)。

?范例運(yùn)行環(huán)境

操作系統(tǒng): Windows Server 2019 DataCenter

PaddleOCRSharp版本:2.2.0.0

數(shù)據(jù)庫:Microsoft SQL Server 2016

.net版本: .netFramework4.0 或以上

開發(fā)工具:VS2019  C#

疲勞測試

添加組件庫

打 VS2019 創(chuàng)建 WinForm 應(yīng)用,在解決方案資源管理器中添加引用,成功后如下圖:

 添加 using PaddleOCRSharp; 引用,示例如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using PaddleOCRSharp;
using System.IO;
using System.Collections;
using System.Data.SqlClient;
using System.Diagnostics;
using System.Security.Cryptography;

方法設(shè)計 

首先在 WinForm (實(shí)例假設(shè)為 Form1),中初化如下變量,代碼如下:

OCRModelConfig config = null;
OCRParameter oCRParameter = new OCRParameter();
PaddleOCREngine engi = null;
OCRResult ocrResult = new OCRResult();

說明表如下: 

序號參數(shù)名類型說明
1config OCRModelConfigOCR模型的配置對象
2oCRParameter OCRParameterOCR模型的識別參數(shù)對象
3engiPaddleOCREngineOCR模型的識別引擎對象
4ocrResultOCRResultOCR模型的識別結(jié)果對象

初始化對象是疲勞測試的關(guān)鍵設(shè)計,如果每次都 new 一個對象,系統(tǒng)運(yùn)行一段時間后就會崩潰。

paddleOCR方法實(shí)現(xiàn)對于路徑圖片的文字識別提取,代碼如下:

string paddleOCR(string imagepath)
{
            var imagebyte = File.ReadAllBytes(imagepath);
            
 
            oCRParameter.cpu_math_library_num_threads = 10;// 預(yù)測并發(fā)線程數(shù)
            oCRParameter.enable_mkldnn = false; // web部署該值建議設(shè)置為0,否則出錯,內(nèi)存如果使用很大,建議該值也設(shè)置為0.
            oCRParameter.cls = false; // 是否執(zhí)行文字方向分類;默認(rèn)false
            oCRParameter.use_angle_cls = false; // 是否開啟方向檢測,用于檢測識別180旋轉(zhuǎn)
            oCRParameter.det_db_score_mode = false; // 是否使用多段線,即文字區(qū)域是用多段線還是用矩形
            oCRParameter.det_db_unclip_ratio = 1.6f;
            
 
            engi = new PaddleOCREngine(config, oCRParameter);
 
            ocrResult = engi.DetectText(imagebyte);
 
            engi.Dispose();
 
            if (ocrResult != null)
            {
                return ocrResult.Text;
            }
            
            return "";
}

paddleOCR方法僅需要提供一個圖片完整路徑參數(shù)即可,方法中的參數(shù)對象需要說明一下,見下表:

序號參數(shù)名說明
1 cpu_math_library_num_threadsCPU預(yù)測時的線程數(shù),在機(jī)器核數(shù)充足的情況下,該值越大,預(yù)測速度越快;在我們應(yīng)用里設(shè)置為10
2enable_mkldnn即是否使用mkldnn庫, web部署該值建議設(shè)置為false,否則出錯,內(nèi)存如果使用很大,建議該值也設(shè)置為false,在這里我們設(shè)置為false
3cls是否執(zhí)行文字方向分類,在這里我們設(shè)置為false
4use_angle_cls是否開啟方向檢測,用于檢測識別180旋轉(zhuǎn),在這里我們設(shè)置為false
5det_db_score_mode是否使用多段線,即文字區(qū)域是用多段線還是用矩形,在這里我們設(shè)置為false
6 det_db_unclip_ratio表示文本框的緊致程度,越小則文本框更靠近文本,在這里我們使用了默認(rèn)值 1.6f

調(diào)用示例 

在Form上假設(shè)有按鈕 Button1,則其點(diǎn)擊事件的調(diào)用代碼示例如下:

private void Button1_Click(object sender, EventArgs e)
{
 
 
   OpenFileDialog ofd = new OpenFileDialog();
   ofd.Filter = "*.*|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";
   if (ofd.ShowDialog() != DialogResult.OK) return;
   string rv2 = paddleOCR(ofd.FileName);
   MessageBox.Show("共識別提取了"+rv2.Length.ToString()+"個文字\r\n"+ rv2, "識別結(jié)果");
   return;
}

小結(jié)

在實(shí)際的運(yùn)行中,三臺機(jī)器同時運(yùn)行,有兩臺機(jī)器運(yùn)行了7天以上暫無報錯,一臺運(yùn)行了5天左右報錯,唯一的區(qū)別在于報錯機(jī)器的顯卡配置較低,不同于其它兩臺機(jī)器??傮w來說對于幾個小時就會出錯,提升了不少,也給我們監(jiān)控運(yùn)行狀況提供了空間。

本實(shí)例是根據(jù)客戶提供的電子圖片類型、目錄結(jié)構(gòu)、JSON配置文件進(jìn)行的定制開發(fā),在實(shí)際應(yīng)用我們要根據(jù)情況進(jìn)行參數(shù)的設(shè)置和設(shè)計的調(diào)整,在測試中我們發(fā)現(xiàn)通過本實(shí)例的參數(shù)設(shè)置可以多識別出一些文字,而且識別率還是比較準(zhǔn)確的。 

到此這篇關(guān)于C# PaddleOCRSharp OCR進(jìn)行疲勞測試的文章就介紹到這了,更多相關(guān)C# OCR疲勞測試內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 圖文介紹c#封裝方法

    圖文介紹c#封裝方法

    在本篇內(nèi)容里小編給大家分享的是關(guān)于c#使用封裝方法以及相關(guān)知識點(diǎn),對此有需要的朋友們可以學(xué)習(xí)下。
    2018-12-12
  • C#開發(fā)Android百度地圖手機(jī)應(yīng)用程序(多地圖展示)

    C#開發(fā)Android百度地圖手機(jī)應(yīng)用程序(多地圖展示)

    這篇文章主要介紹了C#開發(fā)Android百度地圖手機(jī)應(yīng)用程序(多地圖展示)的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • C# 控件屬性和InitializeComponent()關(guān)系案例詳解

    C# 控件屬性和InitializeComponent()關(guān)系案例詳解

    這篇文章主要介紹了C# 控件屬性和InitializeComponent()關(guān)系案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 如何使用C#串口通訊實(shí)現(xiàn)數(shù)據(jù)的發(fā)送和接收

    如何使用C#串口通訊實(shí)現(xiàn)數(shù)據(jù)的發(fā)送和接收

    本文詳細(xì)介紹了如何使用C#實(shí)現(xiàn)基于串口通訊的數(shù)據(jù)發(fā)送和接收,通過SerialPort類,我們可以輕松實(shí)現(xiàn)串口通訊,并結(jié)合事件機(jī)制實(shí)現(xiàn)數(shù)據(jù)的傳遞和處理,感興趣的朋友一起看看吧
    2025-03-03
  • winform模擬鼠標(biāo)按鍵的具體實(shí)現(xiàn)

    winform模擬鼠標(biāo)按鍵的具體實(shí)現(xiàn)

    這篇文章介紹了winform模擬鼠標(biāo)按鍵的具體實(shí)現(xiàn),有需要的朋友可以參考一下
    2013-10-10
  • 淺析C#線程本地存儲中為什么線程間值不一樣

    淺析C#線程本地存儲中為什么線程間值不一樣

    這篇文章主要想來和大家一起討論一下C#線程本地存儲中為什么線程間值不一樣,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • C#(.net)水印圖片的生成完整實(shí)例

    C#(.net)水印圖片的生成完整實(shí)例

    這篇文章主要介紹了C#(.net)水印圖片的生成方法,以一個完整實(shí)例的形式講述了水印圖片的生成技巧,非常實(shí)用,需要的朋友可以參考下
    2014-09-09
  • C#使用Free Spire.Doc查找并高亮Word中指定文本的實(shí)現(xiàn)步驟

    C#使用Free Spire.Doc查找并高亮Word中指定文本的實(shí)現(xiàn)步驟

    在文檔處理場景中,如何高效地查找并高亮Word中的指定文本是一個常見痛點(diǎn),尤其在自動化辦公、批量處理報告或數(shù)據(jù)提取等場景下,本文將分享一種基于Free Spire.Doc for .NET的免費(fèi)實(shí)現(xiàn)方案,幫助開發(fā)者在C#項(xiàng)目中實(shí)現(xiàn)查找 Word中指定文本并高亮顯示的功能
    2025-09-09
  • C#中弱引用使用小結(jié)

    C#中弱引用使用小結(jié)

    弱引用是一種不會阻止垃圾回收的對象引用,適用于緩存和事件監(jiān)聽等場景,但需注意其不確定性和潛在的性能影響,下面就來詳細(xì)的介紹C#中弱引用使用小結(jié),感興趣的可以了解一下
    2025-12-12
  • 在Linux上運(yùn)行C#的方法

    在Linux上運(yùn)行C#的方法

    這篇文章主要介紹了在Linux上運(yùn)行C#的方法,實(shí)例分析了Linux平臺下Mono軟件包的應(yīng)用技巧,以及在此基礎(chǔ)之上的C#運(yùn)行方法,具有一定的參考借鑒價值,需要的朋友可以參考下
    2014-12-12

最新評論

浏阳市| 莎车县| 通河县| 贺州市| 闸北区| 兰考县| 亚东县| 沭阳县| 东乡族自治县| 临清市| 黄陵县| 南川市| 侯马市| 西丰县| 宁波市| 榆社县| 体育| 新平| 襄垣县| 赣榆县| 邳州市| 七台河市| 连城县| 东安县| 太仆寺旗| 乌兰县| 英超| 江城| 甘肃省| 高唐县| 永登县| 蒙城县| 棋牌| 福州市| 南川市| 台北县| 大方县| 高青县| 积石山| 淮北市| 龙口市|