包教包会:用AI做一个免费的出租车发票识别工具,财务人员必看

2026-09-04 22:02:12 0点赞 1收藏 0评论

简要介绍:这是一个给财务人员用的出租车发票识别工具,需要现成程序的,直接拉到文末下载。想自己动手写一个程序的,仔细看文章,哪怕你从来没写过代码,照着一步步操作,也能做出自己的发票识别程序,而且完全免费。

一、为什么要做这个工具

朋友在一个公司里做财务,经常与发票打交道。同事把要报销的发票交给他,他把明细一条条录进Excel。

他说最头疼的就是出租车发票,字小、模糊、有折痕,需要录入的内容包括车牌号、日期、上车时间、下车时间、金额,一张发票录入EXCEL需要几分钟,几十张下来半天时间就没了,时间都浪费在这些无意义的劳动上了。

看来,需要程序员出手拯救他了。

二、为什么不能直接用现成工具

常见的发票包括购买商品发票、机票发票、住宿发票、火车发票、出租车发票等,从形式上来说,有电子的、的纸质的。

电子发票一般是pdf、ofd、xml格式的,网上有很多工具能实现统计功能,用程序直接提取相关字段就能识别。

但是出租车发票就完全不管用了,因为出租车发票一般都是纸质的,要想识别,只能按照"拍照→OCR识别→提取字段"的流程。

包教包会:用AI做一个免费的出租车发票识别工具,财务人员必看

OCR识别、提取字段,看起来简简单单的2句话,却能够难倒一大堆人。

先说OCR。拍照时倾斜、光照不均、有折痕等,都会导致OCR识别失败,需要先对原始图像作二值化、去噪、透视校正等预处理才能提升识别率。

下图是我用电脑版微信OCR识别出来的效果,车牌号、日期、金额都识别错了。

包教包会:用AI做一个免费的出租车发票识别工具,财务人员必看

再说提取相关字段。车号、日期、金额、里程这些字段位置相对固定但不同地区的版式差异很大,使用通用OCR(比如Tesseract、百度飞桨文字识别)只能识别出一坨文字,需要自己写解析逻辑把字段抠出来,如果换一种发票版式,程序就会出错。

所以正确的做法是:直接用云厂商的专用出租车发票识别接口。阿里云、腾讯云、百度都有,它们用深度学习模型专门训练过,直接返回结构化数据:发票代码、发票号码、金额、上下车时间、里程、车牌号,这才是财务场景该用的东西。

三、为什么选腾讯云

主要是免费额度高:腾讯云,免费1000次/月;阿里云,免费200次/月;百度智能云,财务票据文字识别个人认证免费200次、企业认证免费500次。

腾讯云给得最多,个人用完全够了。

所以下面教程以腾讯云为例。

四、具体操作步骤

总体思路:写一个Python小程序,调用腾讯云的识别接口,把照片丢进去,自动吐出Excel表格。

下面一步步来,跟着做就行。

第一步:注册腾讯云,开通文字识别服务

链接是:https://console.cloud.tencent.com/ocr/overview

使用微信扫码即可登陆,然后申请开通文字识别服务。

包教包会:用AI做一个免费的出租车发票识别工具,财务人员必看

新建一个密钥。点击常用工具中的密钥管理,弹出新窗口,点击继续使用。

包教包会:用AI做一个免费的出租车发票识别工具,财务人员必看

点击新建密钥,这时会弹出新的密钥代码,这个非常重要,一定要保存好,而且不要告诉别人。把这个csv文件下载下来,后面有用。

包教包会:用AI做一个免费的出租车发票识别工具,财务人员必看

第二步:在自己电脑上安装Python和必要的库

2.1安装Python

官方地址是:https://www.python.org/,这个地址在国内下载比较慢。

我一般是去阿里云的镜像网站下载,地址是:https://mirrors.aliyun.com/python-release/windows,目前最新版本是python-3.15.0rc2-amd64.exe。下载后,一路点击下一步安装即可。

包教包会:用AI做一个免费的出租车发票识别工具,财务人员必看

2.2安装依赖

正常使用的话,还需要安装2个库,分别是tencentcloud-sdk-python和openpyxl。

打开cmd窗口,依次输入以下命令:

#升级 pip 到最新的版本

python -m pip install --upgrade pip

#将pip的源设置为国内清华大学的源,方便快速下载库文件

pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple

#安装2个库

pip install tencentcloud-sdk-python openpyxl

第三步:让AI帮你写程序

这一步最轻松,不用自己写一行代码,让AI来写。

打开元宝、DeepSeek或者任何你常用的AI对话工具,把下面这段提示词粘贴进去,它就会生成一个完整的Python程序:

我是一名财务人员,经常整理报销的发票,其中有一些是纸质的出租车发票,我拍照后用程序识别内容。请用 Python 帮我写一个完整的识别程序,要求如下:

【技术选型】

1. 使用腾讯云 OCR 的 RecognizeGeneralInvoice 接口,Type 指定为 "TaxiTicket"。

2. 不要使用旧版 TaxiInvoiceOCR(已下架),也不要用通用 OCR 自己解析。

3. SDK 使用 tencentcloud-sdk-python(最新 3.x 版本)。

4. 密钥写在 PY 文件开头,先空着,我后续自己填写。

5. 使用 Python 3.8+(兼容),相关 pip 库我已安装。

【关键踩坑提醒 —— 请务必按此编写,否则会报错】

1. 新版 SDK(3.x)中,出租车票数据不在顶层,真实返回路径是:

data → MixedInvoiceItems[0] → SingleInvoiceInfos → TaxiTicket → {具体字段}

2. TaxiTicket 里的字段名是:Code(发票代码)、Number(发票号码)、Total(金额)、

Date(日期,格式如"2026年06月01日")、TimeGetOn(上车)、TimeGetOff(下车)、

Mileage(里程)、LicensePlate(车牌号)、Place/Province(地区)。

3. 不要猜测字段名,严格按上述路径和名称取值。

4. 创建请求时,必须使用 from_json_string() 或 _deserialize 来设置参数,

不能直接对 req 对象赋值属性(如 req.Type = "TaxiTicket"),否则在某些 SDK 版本中

会导致参数名被截断(例如 "Type" 变成 "Ype")而报 UnknownParameter 错误。

正确做法示例:

params = {"Type": "TaxiTicket", "ImageBase64": base64_str}

req.from_json_string(json.dumps(params))

【功能需求】

1. 支持传入一个目录路径,批量识别该目录下所有 jpg/png 图片(不递归子目录)。

2. 支持传入单张图片路径。

3. client 在外部创建一次,循环里复用(避免签名冲突和重复创建)。

4. 对金额做格式校验(正则匹配数字格式),对发票号码和日期做非空校验。

5. 用发票代码 + 发票号码做去重检测。

【Excel 输出格式】

- 列顺序:序号、姓名、车牌号、日期、时间、金额、备注

- 序号:按日期排序后从 1 开始回填

- 姓名:留空

- 日期:将"2026年06月01日"格式化为"2026-06-01"

- 时间:将上车时间和下车时间合并为"14:11-15:31"格式

- 金额:转为数字类型(方便 Excel 求和)

- 备注:留空

- 用 openpyxl 生成 .xlsx 文件

【文件名规则】

1. 输出文件名格式:YYYYMMDD-HHMMSS_识别结果.xlsx(如 20260903-122322_识别结果.xlsx)

2. 时间戳在 Python 内用 datetime 生成,不要从命令行传中文文件名(避免 Windows GBK 乱码)

【运行方式】

提供一个最简的 Windows .bat 批处理,双击运行,bat 只写一行 python taxi_ocr.py . 即可

【代码风格】

1. 完整可运行,不要省略任何部分

2. 字段解析函数单独写成 parse_fields(raw),方便根据实际 JSON 微调

3. 校验函数单独写成 validate(fields)

4. 最终文件名为 taxi_ocr.py

第四步:填入你的密钥,准备运行

将AI生成的代码保存在本地文件夹中,命名为“taxi_ocr.py”。

包教包会:用AI做一个免费的出租车发票识别工具,财务人员必看

用记事本打开这个文件,将第一步下载的密钥文件“SecretKey.csv”里的SECRET_ID和SECRET_KEY填写进去。

包教包会:用AI做一个免费的出租车发票识别工具,财务人员必看

在文件夹里新建一个文本文件,名字为“run.bat”,内容为:

@echo off

if "%~1"=="" (

python taxi_ocr.py .

) else (

python taxi_ocr.py %*

)

pause

包教包会:用AI做一个免费的出租车发票识别工具,财务人员必看

五、怎么用

这个程序有2种运行方式:

用法1:双击运行。直接双击run.bat,它会自动识别当前文件夹里所有的图片(只识别当前文件夹,不会扫描子文件夹里的图片)。

用法2:拖放图片。把一张或多张发票照片直接拖到run.bat图标上,松手就开始识别。

识别完成后,会自动生成一个Excel文件,文件名带时间戳,比如“20260903-232322_识别结果.xlsx”。文件名格式为:年月日-时分秒加“_识别结果.xlsx”,方便后续查找。

六、实际效果

测试一下,把刚才微信识别错误的1.jpg拖到“run.bat”上,程序就开始运行了,生成了一个“识别结果.xlsx”。

包教包会:用AI做一个免费的出租车发票识别工具,财务人员必看

这张发票是倾斜的,车牌号和实收金额已经被线挡住了,日期那里有折痕,但是识别的完全正确,金额有2种,分别是金额和实收金额,程序自动提取了实收金额,更贴合实际。总体来说,效果非常好。

包教包会:用AI做一个免费的出租车发票识别工具,财务人员必看

现在这个Excel表格的样式是朋友要求的,如果你需要不同的样式,直接跟AI提需求就行。

七、结语

到这儿,一个能用的出租车发票识别工具就做好了。

整个过程你没写过一行代码,全靠AI生成,但结果还不错。

如果需要成品,请到https://www.xcpdf.com/works/的更多作品页面下载,运行前记得替换成你自己的Key。

几个小提醒:

1.腾讯云免费额度是每月1000次,对个人完全够用。用完后按量计费也很便宜,几分钱一次。

2.拍照时尽量把发票放平、光线均匀,识别率会更高。

3.密钥不要发给别人。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
1
扫一下,分享更方便,购买更轻松