BloggerAds

2014年9月10日 星期三

[心得] 運用 Sikuli 將 PDF 表格轉換為可匯入至其他文件的文字檔


最近老婆為了將一個非常多筆資料的 PDF 表格匯入到 OpenOffice 裡面使用而傷透了腦筋,最耗問我有沒有辦法幫她做這個轉換,詢問了一下她的表格格式與特徵並自己實際看了一下,基本上除了欄位有時有值有時空白比較有問題,資料大部分都是中文、日期數字,而且都以相同的三碼編號開頭,根據最後的線索,覺得可以簡單用 Sikuli 寫一個 Parser,畢竟可以利用這相同的編號來當關鍵起點!

所以計畫是這樣,先用 Sikuli 找到三碼相同的編號,因為它是每個欄位的起始點,之後只要計算每個欄位的間隔、判斷欄位資料型別與是否為空白,應該可以很好轉換成存文字文件,加上只要用 Tab 或是固定的符號隔開欄位,OpenOffice 應該都可以匯入才是,所以最後就先決定用 Tab 來隔開欄位了~

但 Sikuli 比較討厭的是在 Windows 平台上在切換應用程式上比較不方便,會需要用到完整的視窗標題,不像 Mac 上面只要應用程式的名稱就可以很方便的切換了!所以在這裡去找谷哥大神花了點功夫,再來就是日期和中文,不像數字字串和英文字串,滑鼠點兩下就可以全選,日期需要點頭點尾來選取,中文的部分在測試後發現滑鼠點三下可以全選,這個也在谷哥上找到詳解,另外就是空白資料的判讀,目前先以辨識在欄位上是否存在某個長度的空白當作判別依據!至此準備工作完成!

前後約花了二至三小時完成了這個 Script,主要時間都花在查資料,寫 Code 的部分說真的要抱怨一下 Sikuli 的文字編輯器時實在是不夠強,希望作者或是接手團隊能加強一下!

之後因為資料實在太多,我也懶得查 Sikuli 加速的方法,放了一天半把資料轉完後寄給老婆,幫她完成了這個人工可能也要不眠不休花一天半才能轉換出來的工作!想想你工作一天半的時間換算成你的時薪,你可以賺多少錢了呢?三小時換一天半,我想還是非常划算的!而且之後就不用再做太多功夫了!只剩下計算不同欄位偏移量而已!

圖形辨識未來將會主宰很多應用,我相信我現在用的不過是冰山一角而已,但也算是學以致用啦!