UiPath Level 1-Lesson 10. PDF


簡介

PDF是一種廣泛使用的文檔格式,在本課中我們將學習從PDF文檔中提取數據的方法,包括當Selector不穩定時如何使用錨點功能。

學習大綱

如何使用Read PDF活動

如何使用Read PDF with OCR活動

如何使用錨點(anchor)從PDF的某個字段里獲取數據


 

1. 關於PDF文檔

1) 安裝PDF擴展活動包

在Activities面板的搜索欄中搜索"pdf",如搜索無結果,說明沒有安裝PDF的活動包。

安裝方法:打開Package Manager,搜索pdf,在搜索結果(UiPath.PDF.Activities)中點擊Install。

 

2) PDF的文本類型

PDF中可以包含文本和圖片。有時文本也可能以圖片的形式出現。

判斷PDF中的某段文字是文本還是圖片,可以直接在文件里選中這段文字。如果是可以選中的,就是文本型;如果選擇文字時,顯示的是一塊整的區域(如下圖),則是圖片型。

 


 

2. 提取大段文字(三種方法)

1) Read PDF Text活動

FileName參數:選擇PDF文件的路徑。

Range參數:選擇要讀取的頁碼。如"All","3","3-5"。

Text參數:輸出變量。

讀取到文本后可以使用Write Text File活動把它寫入一個txt文檔里,或者進行其他的文本操作。

Read PDF Text活動只能讀取可選取的文本,要讀取PDF上的圖片,可以使用Read PDF With OCR活動

 

2) Read PDF With OCR活動

OCR: Optical Character Recognition

首先要在Read PDF With OCR活動中添加一個OCR Engine。目前UiPath有三種OCR Engine:Google,Microsoft和Abbyy FineReader。

還需要在活動的Output參數里設置一個變量,用來存儲讀取到的文本。

我們可以按需設置OCR Engine的參數(注意:不是Read PDF With OCR活動的參數)。不同的OCR Engine的參數項目可能略有不同。

 

 

3) 比較Read PDF Text活動和Read PDF With OCR活動

使用Message Box活動顯示Read PDF Text活動和Read PDF With OCR活動讀取的PDF數據。

Read PDF Text活動的運行結果:PDF上半部分的可選取文本正常顯示,且按照分欄順序顯示。下半部分的圖片文本顯示為“Sample Text & Image PDF”。

Read PDF With OCR活動的運行結果:能夠顯示PDF下半部分的圖片文本。上半部分的可選取文本雖然也能顯示,但是不能按照分欄順序顯示。

*目前大部分OCR Engine還不夠智能,不能識別出文本中的分欄布局。但Abby是個例外,它可以保留文本的結構。因此在上面的PDF里,使用Abby可以按照正確的順序顯示文本。

*OCR讀取數據的准確率和PDF原圖的質量有很大關系。當圖片質量較低時,OCR的准確率也會在很大程度上下降。

注意:上述兩種PDF活動都是內部活動,可以在后台運行,且不需要打開其他的應用程序(比如閱讀PDF的應用Adobe)。

 

4) Screen Scraping工具

在工具欄里選擇Screen Scraping工具,在PDF中指定想要抓取的文本元素,UiPath會顯示一個預覽界面。

 在下圖中,紅色部分是預覽區域,從元素里識別出的文本信息會在這個區域中顯示;藍色部分表示當前使用的Scraping方法;黃色部分表示其他可使用的Scraping方法;點擊綠色部分中的UI Element可以重新指定元素。

*使用Screen Scraping工具的Full Text方法,最終生成的活動是一個Attach Window容器和一個Get Full Text活動

*使用Screen Scraping工具必須先打開PDF文件,且不能在后台運行。


 

3. 提取某個特定文本

PDF數據類型:Native Text (本地文本)。這種文本元素可以直接被UiPath識別和選中。與之對應的是掃描版的PDF,文本是圖片型的文本。

 

1) 提取這份PDF上的Grand Total的值。

使用Get Text活動(或者直接使用Recording工具錄制),選擇PDF文件里的Grand Total的值。

 

2) 假設有很多份類似的PDF,提取每一份PDF上的Grand Total。

思路:修改Get Text活動的Selector,以擴大它的識別范圍。

方法1:UiPath自動修改。在Get Text活動的參數面板里編輯Selector,在Selector Editor里點擊右上角的Attach to Live Element,再選擇另一個PDF文件里的Grand Total。

方法2:手動修改(修改方法僅限此例,更多詳情參見Lesson 6 - Selectors)。

在Get Text活動的參數面板里編輯Selector,在Selector Editor里點擊左下角的Open in UiExplorer

在Current UI面板中勾選上的元素即該Selector的組成部分。查看每一個勾選的元素,並在Selector Attributes面板中查看/修改屬性。

  • text | $40.00 USD:去掉name屬性。

  

  • AcroRd32.exe | Samplee Invoice A.pdf - Adobe Reader:去掉title屬性。

  

  • row:添加rowName屬性。

把 最終得到的Selector復制到之前的Selector Editor中。


 

4. 使用錨點提取特定文本

1) 添加一個Anchor Base活動

 

2) 最典型的Anchor (錨點) 就是Find Element活動。添加該活動,用它來定位某一個固定的元素。在此例中,指定的錨點是PDF上的"Grand Total"。

 

3) 使用錨點的目的是提取Grand Total的值,因此在Anchor Base活動的右邊添加Get Text活動,並指定PDF上Grand Total的值。

 

4) 不論是Find Element活動還有Get Text活動,它們都有自己的Selector參數。

Get Text活動的Selector:$40.00 USD數值過於具體,可以使用通配符*進行替換,即<ctrl name='$ * USD ' role='text'/>

*由於Get Text活動的Selector根據錨點元素進行定位,這里只顯示了完整的Selector的最后一行,即它是一個Partial Selector。

Find Element活動的Selector

修改前:

修改后:標題的部分用通配符*替換;刪除第三行,因為它不包含任何唯一的識別標識。

*Anchor Base活動有一個Anchor Position參數,可以設定錨點相對於數據的位置。在此例中,我們可以設定該參數為Left。

 

5) 使用Find Image活動作為錨點,替換Find Element活動。

優點:使用Find Element活動作為錨點,只能在相同結構的PDF文檔中准確的提取數據。但使用Find Image活動作為錨點,可以不考慮PDF文檔的結構,只需要在PDF可見部分的任一位置包含有指定的特定圖像即可。另外,使用Find Image活動也不需要花時間去修改和調試Selectors。

  • 首先將PDF文檔調整為實際大小,以確保獲取圖片的完整性和准確性:View → Zoom → Actual Size。
  • 添加Find Image活動,選取圖像。

*Find Image活動能適應一定范圍內的尺寸變化。

*使用Anchor Base活動,特別是配合Find Image活動一起使用,常比使用其他方法更加可靠。因為就算PDF文檔的主要結構發生變化,只要文字或圖片能顯示出來,並且和數據的對應關系不變,UiPath就可以提取出數據。

*使用Anchor Base活動必須先打開PDF文檔,並且操作的數據必須是可見的(如果數據不在當前頁面上,UiPath無法操作該數據)。


 

5. 其他方法

1) Find Relative Element活動

2) Scrape Relative工具

3) 對於掃描版的PDF,請參閱Lesson 7  - Image and Text Automation學習如何使用UiPath處理圖像。


 

6. 練習

要求:假定每個PDF文檔中的數據內容都是不同的,使用錨點來獲取Date和Bill To的信息。

思路:添加Anchor Base活動;用Find Element活動確定Date和Bill To的文字標簽的位置;用Get Text活動讀取數據。注意調整Selector以適應可變的數據。

 


 

*本課使用過的新活動、方法、函數等:

Read PDF Text

Read PDF With OCR

Find Relative Element


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM