日韩欧美人妻无码精品白浆,www.大香蕉久久网,狠狠的日狠狠的操,日本好好热在线观看

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C#調(diào)用Python腳本的方式,以PaddleOCR-GUI為例

freeflydom
2024年12月14日 11:33 本文熱度 1568

前言

每種語言都有每種語言的優(yōu)勢,Python由于其強(qiáng)大的生態(tài),很多任務(wù)通過調(diào)用包就可以實(shí)現(xiàn),那么學(xué)會從C#項(xiàng)目中調(diào)用Python腳本完成任務(wù)就很重要。C#調(diào)用Python代碼有多種方式,如果Python那邊內(nèi)容比較多,可以考慮起一個(gè)Web Api進(jìn)行調(diào)用,如果只是一個(gè)簡單的腳本而且不需要頻繁調(diào)用,那么可以考慮使用Process類創(chuàng)建一個(gè)進(jìn)程來調(diào)用,如果有幾個(gè)方法,并且需要進(jìn)行數(shù)據(jù)交互,并可能會頻繁調(diào)用,那么可以考慮使用pythonnet。

今天依托PaddleOCR-GUI項(xiàng)目,先給大家介紹的是C#調(diào)用Python腳本的方式一:使用Process類調(diào)用Python腳本。

背景介紹

PaddleOCR是基于PaddlePaddle框架開發(fā)的開源文字識別工具,由百度團(tuán)隊(duì)維護(hù)。它提供了從預(yù)處理、文字檢測、文字識別到后處理的全流程文字識別解決方案。PaddleOCR不僅性能優(yōu)異,而且配置靈活、使用便捷,能夠滿足多種場景下的文字識別需求,廣泛應(yīng)用于廣告檢測、圖像搜索、自動駕駛、內(nèi)容安全審核等多個(gè)領(lǐng)域。

GitHub地址:https://github.com/PaddlePaddle/PaddleOCR

之前也介紹過C#中可以直接使用PaddleSharp進(jìn)行調(diào)用:

C#使用PaddleOCR進(jìn)行圖片文字識別

但是不能指望所有Python的東西都有大佬給你封裝好,讓你直接調(diào)就行。需要離開自己的舒適區(qū),去了解更多其他語言其他生態(tài)的內(nèi)容。

PaddleOCR-GUI只是給PaddleOCR提供了一個(gè)簡單的使用界面,使用效果如下所示:

GitHub地址:https://github.com/Ming-jiayou/PaddleOCR-GUI

需要先在電腦上搭建PaddleOCR的環(huán)境:

Python版本 3.12.8

創(chuàng)建一個(gè)Python虛擬環(huán)境,在虛擬環(huán)境中安裝好PaddleOCR,可以參考官網(wǎng)的快速開始:

快速開始 - PaddleOCR 文檔

C#調(diào)用Python腳本

今天演示的是通過Process類調(diào)用Python腳本,與實(shí)際項(xiàng)目相結(jié)合,需要思考的是如何進(jìn)行參數(shù)的傳遞呢?比如這里選擇的圖片路徑以及選擇的語言。

可以通過命令行參數(shù)的方式使用,Python腳本寫好如下所示:

import sys
import logging
from paddleocr import PaddleOCR
# Paddleocr目前支持的多語言語種可以通過修改lang參數(shù)進(jìn)行切換
# 例如`ch`, `en`, `fr`, `german`, `korean`, `japan`
# 檢查是否有參數(shù)傳遞
if len(sys.argv) > 1:
	imagePath = sys.argv[1]
	selectedLanguage = sys.argv[2]
else:
	print("請?zhí)峁┩暾麉?shù)")
# 配置日志級別為 WARNING,這樣 DEBUG 和 INFO 級別的日志信息將被隱藏
logging.basicConfig(level=logging.WARNING)
# 創(chuàng)建一個(gè)自定義的日志處理器,將日志輸出到 NullHandler(不輸出)
class NullHandler(logging.Handler):
	def emit(self, record):
		pass
# 獲取 PaddleOCR 的日志記錄器
ppocr_logger = logging.getLogger('ppocr')
# 移除所有默認(rèn)的日志處理器
for handler in ppocr_logger.handlers[:]:
	ppocr_logger.removeHandler(handler)
# 添加自定義的 NullHandler
ppocr_logger.addHandler(NullHandler())
ocr = PaddleOCR(use_angle_cls=True, lang=selectedLanguage)  # need to run only once to download and load model into memory
img_path = imagePath
result = ocr.ocr(img_path, cls=True)
for idx in range(len(result)):
	res = result[idx]   
	for line in res:
		print(line[1][0])

需要傳遞的參數(shù)在此處通過命令行的方式傳遞:

# 檢查是否有參數(shù)傳遞
if len(sys.argv) > 1:
	imagePath = sys.argv[1]
	selectedLanguage = sys.argv[2]
else:
	print("請?zhí)峁┩暾麉?shù)")

然后在C#中只需這樣使用即可:

  private Task ExecuteOCRCommand()
  {
      return Task.Run(() =>
      {
          string selectedLanguage;
          switch (SelectedLanguage)
          {
              case "中文":
                  selectedLanguage = "ch";
                  break;
              case "英文":
                  selectedLanguage = "en";
                  break;
              default:
                  selectedLanguage = "ch";
                  break;
          }
          if (PaddleOCRSettingsViewModel.PythonScriptPath == null || PaddleOCRSettingsViewModel.PythonExecutablePath == null)
          {
              return;
          }
          string pythonScriptPath = PaddleOCRSettingsViewModel.PythonScriptPath; // 替換為你的Python腳本路徑
          string pythonExecutablePath = PaddleOCRSettingsViewModel.PythonExecutablePath; // 替換為你的Python解釋器路徑
          if (SelectedFilePath == null)
          {
              return;
          }
          string arguments = SelectedFilePath; // 替換為你要傳遞的參數(shù)                                                                                                                                                                         
          // 創(chuàng)建一個(gè) ProcessStartInfo 實(shí)例
          ProcessStartInfo start = new ProcessStartInfo();
          start.FileName = pythonExecutablePath;
          start.Arguments = $"\"{pythonScriptPath}\" {arguments} {selectedLanguage}";
          start.UseShellExecute = false;
          start.RedirectStandardOutput = true;
          start.CreateNoWindow = true;
          // 創(chuàng)建并啟動進(jìn)程
          using (Process process = Process.Start(start))
          {
              using (System.IO.StreamReader reader = process.StandardOutput)
              {
                  string result = reader.ReadToEnd();
                  OCRText = result;
              }
          }
      });
  }

需要注意的地方在這幾處:

Python解釋器路徑為虛擬環(huán)境中的Python解釋器,我這里如下所示:

在此處傳入Python腳本路徑與設(shè)置的參數(shù)。

?轉(zhuǎn)自https://www.cnblogs.com/mingupupu/p/18605737


該文章在 2024/12/14 11:33:59 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

日产乱码精品一区| 国产亚洲欧美伦理| 非洲大黑屌后入免费视频| 日韩三级一区| 久久免费高潮少妇| 欧美3p视频网址| 麻豆视频自拍| 黄色吸奶网站免费看| 久久久久久久一类黄片| www日本久久久| 中文字幕+乱码+中文乱码91| 欧美日韩国产无砖| 亚洲 欧美系列| 美女老师扒开腿让我捅| 亚洲石原莉奈一区二区| 粉嫩精品一区二区| 亚洲一区二区激情四射| 草避激情视频一区二区| 日本久久激情网站| 狠狠干b| 校园春色欧美风情| 迷奸一区二区三区| 欧美黄片视频了| 五月天一区二区三区| 国产一级毛黄片片色二| 最新午夜黄色电影| 成人社会男人天堂| 日B视频看看免费的| AV国产传媒不卡| 日韩热这里只有精品| 非洲在线一区二区| 日韩在线一卡播放| 艹bb网站在线| 美女张开腿黄网站在线| 日韩女同性区一区二| 亚洲图片 欧美一区二区| 日本免费抽插| 亚洲性爱 12p 在线播放| 麻豆久久精品成人三级| 91亚洲黄色免费| 亚洲精品网页入口漫画|