跳到主要內容

RPA-Uipath(7)-OCR相關技術

UiPath 中,OCR (Optical Character Recognition) 功能可以用來識別並提取圖像或掃描文件中的文本內容,使機器能夠理解並處理這些文本數據。UiPath 提供了多個 OCR 引擎的選擇,每個引擎都有一些差異,包括效果、支持語言、速度等方面。以下是常見的幾個 OCR 引擎及其差異:

以下我們介紹兩種用OCR取得文字的方式與4OCR引擎。

1.     利用Load Image + OCR引擎取得整張圖像中的文字。

a.        非雲端服務:Micorsoft OCR, Tessract OCR

b.        雲端服務:Google Cloud Vision, Micosoft Azure Computer Vision

<特別注意>

l   Google Cloud Visionà屬性欄位中的Apikey為必要填寫,以下提供教學影片如何取得API key

l   Micosoft Azure Computer Visionà屬性欄位中的Apikey EndPoint為必要填寫,以下提供教學影片如何取得API key

[補充]

l   “Google Cloud Vision” API key取得方式參考影片:https://www.youtube.com/watch?v=cld-An4u_I8

l   “Micosoft Azure Computer Vision” API keyend point取得方式參考影片:https://www.youtube.com/watch?v=hSzMtcEUtHk

2.    利用Get OCR Text + OCR引擎取得整張圖像中的文字或部分區域的文字。

7.1 Load Image + OCR引擎取得整張圖像中的文字

<範例圖片>

<辨識結果>

我們可以看到Micorsoft OCRGoogle Cloud Vision表現不錯,Tessract OCRMicosoft Azure Computer Vision在中文的辨識表現較差,Tessract OCR的問題是因為Uipath內建的語言資料庫沒有中文,所以只要在網路上下載中文資料庫放入指定路徑並在Language屬性寫上中文代號(“chi_tra”)即可,如下圖示說明:

[下載路徑與language code]: https://github.com/tesseract-ocr/tesseract/blob/main/doc/tesseract.1.asc#languages
[Tessract語言資料庫路徑]%UserProfile%.nuget\packages\uipath.vision\3.x.x\build\tessdata.

< Tessract OCR 加入中文資料庫後辨識結果>

但我們可以看到英文部分反而結果變差了,雖然中文被辨識出來了但結果也沒有很好,這可能是因為圖片的解析度不高造成的。

我們再來看Micosoft Azure Computer Vision的部分,它看起來只辨識出英文,英文辨識得也不錯,但中文完全沒被辨識出來,這是因為它預設只辨識英文,如果要辨識其他語言,一樣在Language處填入language codeMicosoft Azure Computer Vision的繁體中文language code” zh-Hant”

[Micosoft Azure language code]https://learn.microsoft.com/en-us/azure/ai-services/computer-vision/language-support

我們可以看出Language處填入” zh-Hant”,中文被辨識出來且英文的辨識結果也沒有變差。

7.2 利用Get OCR Text + OCR引擎取得整張圖像中的文字或部分區域的文字

利用Get OCR Text搭配OCR引擎可以取得整張圖像中的文字或部分區域的文字,以下是模組基本架構:

以下是我們給的一個範例:

利用edge瀏覽器開啟一個帳單的pdfà將畫面最大化à擷取帳單總金額(用藍色小手指框選)à利用MessageBox顯示金額結果



留言

這個網誌中的熱門文章

RPA-Uipath筆記(1) - 如何從網路上下載資料並存至指定路徑

最近在做 RPA 相關專案時遇到了這個問題: 如何從網路上下載資料並存至指定路徑? 針對這個問題我們採取的解決方案是 先讓檔案下載到電腦的預設路徑,再將檔案移動到我們指定的資料夾 。 以下我們用下載政府公開資料平台的資料 ("https://data.gov.tw/dataset/116285") 為例, Uipath 的流程建立如下: 使用到了 Wait for Download 、 Move File 、 Delete File 三個 Activity , Wait for Download 中 Monitored folder 必須放瀏覽器中設定的下載檔案的預設路徑且關閉詢問儲存位置。 Downloaded file 則是設定一個變數名稱 downloadfile( 可自訂 ) ,此變數的資料型態是 FileInfo 。中間則放入下載的流程步驟,從下載開始到結束都會在此 Activity 中執行完畢,執行完後所下載的檔案的相關資訊都會被存放在變數 downloadfile 中。 接下來是將檔案從預設下載路徑中移至指定路徑,這裡就需要下載預設路徑與指定路徑,這兩個我們在流程一開始就建了了兩個變數 dnlo_path 、 asng_path ,寫法如下: dnlo_path = "C:\Users\" +system.Environment.UserName+ "\Downloads" system.Environment.UserName à VB 語法,代表目前電腦的使用者名稱。 asng_path = "D:\Bolg 資料 \Uipath\Uipath(1)" Move File Activity 中 From 要放入目前檔案的位置; To 則要放入檔案存放的指定的位置,但因為是要做檔案的移動,所以以上兩個路徑後面都要再加上檔案名稱,這時可以使用 downloadfile 這個變數的屬性值叫出檔案名稱( downloadfile.Name ),當檔案名稱是隨機變動的時候,非常好用。另外,特別值得注意的是, To 的部分在加上檔案名稱時,可以不用用原始檔案的名稱,這時可以同時達到修改檔名的效果。 Overwrite 的部分打勾代表再重複執行一次的時...

RPA-Uipath(5)-如何讀取Mail與取得Mail的資訊

本篇主要介紹 Uipath 取得 mail 相關資訊與附件的方法,因為 mail 的種類眾多,本範例以 Gmail 為例。首先在使用 Uipath 取得 Gmail 相關資訊前須對 Google 帳戶的安全性進行兩階段驗證設定,設定方式如下: Step1. 點選 ” 管理你的 Google 帳戶 ” Step2.  點選 ” 安全性 ” à ” 兩階段驗證 ” à 點選 ” 開始使用 ” Step3.  依 Google 所提示步驟,您最後會取得一組密碼,請務必將此密碼記下。 接下來要開始使用 Uipath 擷取 mail 相關資訊,一開始我們先使用 Get Password 儲存 mail 登入的密碼,此時密碼不是使用您真正的密碼而是使用剛剛兩階段驗證後取得的密碼,並儲存於變數 password 。 接下來使用 Get IMAP Mail Messages 來取得 mail 的相關資訊,在使用 Get IMAP Mail Messages 時必須在其屬性設定區塊進行一些參數設定。 Port 欄位填入 993 , Server 欄位填入 "imap.gmail.com" , Email 欄位填入您的 Email , Password 欄位填入 變數 password , Message 欄位我們用 MailMessage 變數填入 Mail 的相關資訊都會存在 MailMessage 變數中,我們可以用 For Each 迴圈逐一取得 mail 的相關資訊。 For Each 的屬性區塊部分也需要進行一些參數設定, List of item 欄位需填入 MailMessage 變數, TypeArgument 則須設定為 System.Net.Mail.MailMessage 。 設定完成後,我們先用 Write Line 將信件的主旨印出做為測試( 這邊我們只印出前 5 封信件的主旨,可在 Get IMAP Mail Messages 的屬性區塊中 Top 欄位中設定 ),如果要印出信件主旨,需要用 item.Subject 屬性,如要印出其他資訊,我們將常用的幾個列在以下表格: 最後,有些信件會附帶一些附件,我們如何將這些物件儲存下來呢 ? 這邊只需要用到 Save Attachments 即可。我們將其放在迴圈內以下載每個有附件的 mail...

RPA-Uipath(6)-如何讀取檔案的相關日期與時間

這一篇我們主要要說明如何批次將檔案的 ” 建立時間 ” 、 ” 修改時間 ” 、 ” 存取時間 ” 擷取出來,並整理匯出一個 Excel 表格。 在說明之前,我們簡單說明一下我們要擷取的是那些時間,我們可以針對任一個檔案,按下右鍵,選取內容,就會跳出該檔案的相關資訊,其中就有所謂的 ” 建立時間 ” 、 ” 修改時間 ” 、 ” 存取時間 ” ,如下圖所示,我們的目的就是將這些時間一一擷取出來。 要擷取以上的這些時間,需要用到 FileInfo() 物件,用法如下: 1.      建立時間: new FileInfo( 檔案路徑 ).CraeationTime.ToString( 日期時間格式 ) 2.      最後修改時間: new FileInfo( 檔案路徑 ).LastWriteTime.ToString( 日期時間格式 ) 3.      最後存取時間: new FileInfo( 檔案路徑 ).LastAccessTime.ToString( 日期時間格式 ) 因為我們的範例要批次讀取一個資料夾中多個檔案,所以會用到 Directory.GetFiles( 資料夾路徑 ) ,此函數會回傳資料夾中所有檔案的路徑並以 List 型態儲存。 以下我們說明我們如何用 Uipath 達到此目的: 我們一開始先用 FilePathList 變數儲存資料夾中所有檔案的路徑,建立一個空的 DataTable ,其中我們建立了四個欄位 ”FileName” 、 ”CreationTime” 、 "LastModifiedTime" 、 ”LastAccessTime” 。 接下來,利用 For Each 對每一個檔案,擷取以上四個資訊並分別用四個變數儲存 FileName 、 FileCreationTime 、 FileLastModifiedTime 、 FileLastAccessTime 並將次四個資訊放入 DataTable 中 ( 利用 Add Data Row 的 Activity) 。 For Each 結束後,我們將 DataTable 寫入 Excel 中並存於同一個資料夾,如下圖所示。