OFD專用電子發票及PDF普通電子發票-批量解析V1.5

chenowei發表於2020-12-03

      新版小工具終於開發完了。這一版本,之前有些使用者提到的備註區、貨物清單基本上已經支援。由於此版本耗費了大量精力,這一版本之後,可能較長一段時間不會再更新。

 

1、下載地址: 

      連結:https://pan.baidu.com/s/1SlQUNj7rhSdaKcW1M1UqhA  提取碼:cwww (若下載連結失效,說明已存在新版本,請在本部落格中檢視最新文章下載最新版本

2、使用的程式語言

      1)、python

      2)、使用到的主要第三方包:

                Excel讀寫:xlrd、xlutils、

                PDF檔案讀取及資訊提取:pdfplumber、re、matplotlib(除錯時視覺化用)

                OFD檔案讀取及資訊提取:zipfile、xml.dom.minidom

3、主要思路

      1)、PDF發票提取

                ①、使用pdfplumber讀取pdf檔案中的txt,使用re匹配關鍵字,提取絕大部分欄位的資訊(各pdf發票格式差異較大,需要使用多種匹配方式去提取)

                ②、使用pdfplumber讀取pdf中的lines、edges、curves等,算出pdf中的表格定位點(各pdf差異較大,需要去嘗試多種方案),再通過定位點,在pdf中提取特定區域的文字(比如,備註,貨物清單)

      2)、OFD發票提取

                ①、OFD是壓縮檔案,使用zipfile解壓

                ②、使用xml.dom.minidom讀取解壓後的Doc_0/Attachs/original_invoice.xml等xml檔案,提取資訊

      3)、Excel寫入

                ①、使用xlrd讀取模板Excel檔案,使用xlutils複製格式等

4、功能介紹

      1)、提取的資訊

欄位說明欄位說明
檔名 價稅合計 
檔案型別PDF/OFD稅額合計 
發票標題 不含稅金額 
檔案IDOFD才有備註 
發票程式碼 開票人 
發票號碼 收款人 
發票型別程式碼OFD才有複核人 
開票日期 二維碼中的值OFD才有
校驗碼 貨物清單1、每一行對應一種貨物
2、每個欄位使用 ψ 分割
3、每行的欄位順序如下:
序號,專案名稱,規格型號,單位,數量,單價,金額,稅率,稅額
機器編號 
密碼區 
購買方名稱 銷售方名稱 
購買方納稅人識別號 銷售方納稅人識別號 
購買方地址、電話 銷售方地址、電話 
購買方開戶行及賬號 銷售方開戶行及賬號 

      2)、未提取的資訊

                ①、PDF發票,若貨物清單在第二頁的,目前沒有提取

                ①、PDF發票。目前已知部分發票無法正確提取 備註 和 貨物清單(實在是太麻煩了,不想適配了)。

5、其他說明

      1)、OFD發票測試樣本太少,可能存在解析不了的

      2)、部分欄位可能存在提取不正確或缺失

      3)、遇到提取失敗或者部分欄位提取失敗的,可以聯絡我,並提交對應檔案給我,我可以除錯下。

      4)、使用說明,請下載後看 使用說明.txt。或者看第一篇文章。

 

 

相關文章