天天看点

体验uibot自动化识别票据并统计相关信息

背景

近期有个从事会计的朋友咨询我,会不会uibot软件。 uibot没听过,当前也不会用了,就顺便聊了几句。大概描述下需求,就是公司很多发票,基本上都是先拍照,然后在人工统计发票信息。但是工作量太大了。 所以想通过uibot这样的智能自动化工具统计。

本着乐于助人和学习的态度,研究了一下。

从两个功能来练手,一个是增值税发票统计自动化,一个是火车票统计自动化。

现将基本的配置和代码整理出来,仅供参考。

实现

  • 增值税发票统计自动化

    开始之前,先介绍下整个流程。 首先是获取发票所在目录中的所有发票,然后遍历一下发票,提取发票信息,写入excel。

    • 下载uibot软件,安装、注册。
    • 网上下载一些增值税发票素材。
    • 运行uibot软件
      1. 打开发票目录,获取发票文件

        左侧命令中心->文件处理->通用文件, 找到"获取文件或文件夹列表",并拖动到中间可视化工作区。

        体验uibot自动化识别票据并统计相关信息
        体验uibot自动化识别票据并统计相关信息
      2. 在右侧属性和变量部分, 路径一项中,选择发票路径的最终目录。 输出到设置为"发票列表",此数组后续会调用。
        体验uibot自动化识别票据并统计相关信息
      3. 命令中心->软件自动化->Excel, "打开Excel工作簿",拖动到中间可视化工作区。
        体验uibot自动化识别票据并统计相关信息
        在属性和变量部分,选中要保存发票信息的Excel文件。
        体验uibot自动化识别票据并统计相关信息
      4. 遍历第2步设置好的数组"发票列表",以便于逐一识别发票信息。 基本命令->语法词法,按图示,拖动到可视化工作区。
        体验uibot自动化识别票据并统计相关信息
        其中,数组设置为"发票列表", 值设置为 "发票路径"。
        体验uibot自动化识别票据并统计相关信息
        点击"源代码",增加如下一行,测试效果。
体验uibot自动化识别票据并统计相关信息

5. 点击"Mage AI"->"通用多票据识别":

体验uibot自动化识别票据并统计相关信息
体验uibot自动化识别票据并统计相关信息

图像来源:输入第4步设置的值,即"发票路径",即调用每一张发票。

体验uibot自动化识别票据并统计相关信息

选择票的类型和提取自段,如图示:

体验uibot自动化识别票据并统计相关信息

6. 设置提取字段输出。 每个提取的字段我们可以自定义输出变量,该变量对应到用来保存信息的Excel列名。如图示

体验uibot自动化识别票据并统计相关信息
体验uibot自动化识别票据并统计相关信息

设置完毕:

体验uibot自动化识别票据并统计相关信息

7. 看看源代码, 红框中的代码为刚才配置的部分代码。但是财务同学不只有增值税专用发票,增值税电子发票。所以我复制一段上面的代码到下面,把"special" 改为"electronic" 即可。

体验uibot自动化识别票据并统计相关信息

8. 接下来就是要写入到Excel了。 命令中心->软件自动化->写入行,拖动到可视化工作区。

体验uibot自动化识别票据并统计相关信息

9. 我们看看保存发票信息的Excel的信息。

体验uibot自动化识别票据并统计相关信息

写的话,肯定是从第2行写,让程序自动识别当前行数。所以我们需要在"写入行"之前,插入一个步骤,即获取当前行数。

10. 获取Excel当前行数,从当前行的下一行开始写。

软件自动化->Excel,将"获取行数"拖动到"写入行"这一操作的前面,工作表默认为"Sheet1",如果你的工作表不是默认值,请修改为时间的工作表名称。 "输出到"保持默iRet变量即可。

体验uibot自动化识别票据并统计相关信息
体验uibot自动化识别票据并统计相关信息

打开源代码,按照图示,增加一行,让变量自+1(即下一行)

体验uibot自动化识别票据并统计相关信息
11. 写入设置: 第10步,iRet已经自+1,对应到下一行,所以我们直接写入iRet这一行就可以了。"立即保存"该项自主设置。
           
体验uibot自动化识别票据并统计相关信息

运行软件,展现效果:

体验uibot自动化识别票据并统计相关信息

因为网上下载的发票素材不清晰,发票代码和发票号码不能识别。 使用清晰的真实发票图片是可以顺利识别的。

发票信息统计自动化整体代码:

Dim iRet = ""
Dim 校验码 = ""
Dim objExcelWorkBook = ""
Dim arrayRet = ""
发票列表 = File.DirFileOrFolder('''C:\Users\Administrator.BJ937-9371\Desktop\fapiao''',"file",{"hasPath":True})
objExcelWorkBook = Excel.OpenExcel('''C:\Users\Administrator.BJ937-9371\Desktop\发票信息统计.xlsx''',True,"Excel","","")
For Each 发票路径 In 发票列表
	Log.Info(发票路径)
	With Each Mage.ImageOCRInvoice(发票路径,{"Pubkey":"Eto6bgJvXg2S5nDg5HnW","Secret":"TqS9K3xGiY5sYzWQuaXy9x5wpr7H","Url":"https://mage.uibot.com.cn"},30000)
		Select Case .ExtractInvoiceType()
		Case Alias("vat_special_invoice","增值税专用发票")
			发票种类 = .ExtractInvoiceInfo("vat_special_invoice","type")
			发票代码 = .ExtractInvoiceInfo("vat_special_invoice","vat_invoice_daima")
			发票号码 = .ExtractInvoiceInfo("vat_special_invoice","vat_invoice_haoma")
			开票日期 = .ExtractInvoiceInfo("vat_special_invoice","vat_invoice_issue_date")
			校验码 = .ExtractInvoiceInfo("vat_special_invoice","vat_invoice_correct_code")
			购方税号 = .ExtractInvoiceInfo("vat_special_invoice","vat_invoice_rate_payer_id")
			购方名称 = .ExtractInvoiceInfo("vat_special_invoice","vat_invoice_payer_name")
			金额  = .ExtractInvoiceInfo("vat_special_invoice","vat_invoice_price")
			税率 = .ExtractInvoiceInfo("vat_special_invoice","vat_invoice_tax_rate")
			税额 = .ExtractInvoiceInfo("vat_special_invoice","vat_invoice_tax")
			价税合计 = .ExtractInvoiceInfo("vat_special_invoice","vat_invoice_total_cover_tax_digits")
		Case Alias("vat_electronic_invoice","增值税电子普通发票")
			发票种类 = .ExtractInvoiceInfo("vat_electronic_invoice","type")
			发票代码 = .ExtractInvoiceInfo("vat_electronic_invoice","vat_invoice_daima")
			发票号码 = .ExtractInvoiceInfo("vat_electronic_invoice","vat_invoice_haoma")
			开票日期 = .ExtractInvoiceInfo("vat_electronic_invoice","vat_invoice_issue_date")
			校验码 = .ExtractInvoiceInfo("vat_electronic_invoice","vat_invoice_correct_code")
			购方税号 = .ExtractInvoiceInfo("vat_electronic_invoice","vat_invoice_rate_payer_id")
			购方名称 = .ExtractInvoiceInfo("vat_electronic_invoice","vat_invoice_payer_name")
			金额 = .ExtractInvoiceInfo("vat_electronic_invoice","vat_invoice_price")
			税率 = .ExtractInvoiceInfo("vat_electronic_invoice","vat_invoice_tax_rate")
			税额 = .ExtractInvoiceInfo("vat_electronic_invoice","vat_invoice_tax")
			价税合计 = .ExtractInvoiceInfo("vat_electronic_invoice","vat_invoice_total_cover_tax_digits")
		Case Else
		End Select
	End With
	iRet = Excel.GetRowsCount(objExcelWorkBook,"Sheet1")
	iRet = iRet + 1
	Excel.WriteRow(objExcelWorkBook,"Sheet1","A"&iRet,[发票种类,发票代码,发票号码,开票日期,校验码,购方税号,购方名称,金额,税率,税额,价税合计],False)
Next

           
  • 火车票统计自动化

操作过程基本一样,只是提取字段不同。

  • 可视化部分:
    体验uibot自动化识别票据并统计相关信息
    体验uibot自动化识别票据并统计相关信息
  • 代码截图:
体验uibot自动化识别票据并统计相关信息
  • 输出效果
Dim iRet = ""
Dim objExcelWorkBook = ""
Dim arrayRet = ""
车票列表 = File.DirFileOrFolder('''C:\Users\Administrator.BJ937-9371\Desktop\chepiao''',"file",{"hasPath":True})
objExcelWorkBook = Excel.OpenExcel('''C:\Users\Administrator.BJ937-9371\Desktop\车票信息统计.xlsx''',True,"Excel","","")
For Each 车票路径 In 车票列表
	Log.Info(车票路径)
	With Each Mage.ImageOCRInvoice(车票路径,{"Pubkey":"Eto6bgJvXg2S5nDg5HnW","Secret":"TqS9K3xGiY5sYzWQuaXy9x5wpr7H","Url":"https://mage.uibot.com.cn"},30000)
		Select Case .ExtractInvoiceType()
		Case Alias("train_ticket","火车票")
			车票号码 = .ExtractInvoiceInfo("train_ticket","ticket_number")
			乘车日期 = .ExtractInvoiceInfo("train_ticket","departure_date")
			出发地 = .ExtractInvoiceInfo("train_ticket","departure_station")
			目的地 = .ExtractInvoiceInfo("train_ticket","arrival_station")
			车次 = .ExtractInvoiceInfo("train_ticket","train_number")
			座位类别 = .ExtractInvoiceInfo("train_ticket","class")
			身份证 = .ExtractInvoiceInfo("train_ticket","passenger_id")
			金额 = .ExtractInvoiceInfo("train_ticket","price")
		Case Else
		End Select
	End With
	iRet = Excel.GetRowsCount(objExcelWorkBook,"Sheet1")
	iRet = iRet + 1
	Excel.WriteRow(objExcelWorkBook,"Sheet1","A"&iRet,[车票号码,乘车日期,出发站,目的站,车次,座位类别,身份证,金额],False)
Next