Recognize and extract structured data from invoices, receipts, and bills using iFlytek OCR API (科大讯飞票据识别). Supports VAT invoices, taxi receipts, train tickets, toll invoices, medical bills, bank receipts, and more.
OCR-based invoice and receipt recognition using the iFlytek (科大讯飞) API. Extracts structured fields from photos or scans of Chinese invoices and bills.
XFYUN_APP_ID — Application IDXFYUN_API_KEY — API KeyXFYUN_API_SECRET — API Secretpng, jpg/jpeg, bmp, gif, tif/tiff, pdf
The script is at scripts/invoice.py relative to this skill directory.
python3 scripts/invoice.py /path/to/invoice.png
| Flag | Description |
|---|---|
--raw | Output raw API JSON response instead of formatted text |
# Recognize a VAT invoice
python3 scripts/invoice.py ./vat_invoice.jpg
# Recognize a medical receipt with raw output
python3 scripts/invoice.py ./medical_bill.png --raw
# Recognize a taxi receipt
python3 scripts/invoice.py ./taxi_receipt.jpg
Human-readable structured fields:
票据类型: 增值税普通发票
发票代码: 012345678901
发票号码: 12345678
开票日期: 2026年03月06日
金额: ¥1,234.56
...
Full API JSON response including all metadata and encoded payload.
Uses HMAC-SHA256 signature-based auth (讯飞鉴权). The script handles all signing automatically — just set the three environment variables.
POST https://api.xf-yun.com/v1/private/sc45f0684别慌别慌~ 对照下面的表格看看,大部分问题都能自己解决哦!如果试了还是不行,随时来问我,我们一起解决~ ✧٩(ˊᗜˋ*)و✧
| 错误码 | 可能的原因 | 快去检查这个! |
|---|---|---|
| 10105 / 10313 | 哎呀,认证信息好像不太对呢 | → 三个环境变量都设好了吗?往下看有详细检查步骤 |
| 10163 | 传送的图片数据有点问题 | → 图片压缩一下试试?或者换个格式? |
| 10200 | 找不到图片文件啦 | → 路径对不对?文件有没有损坏? |
| 11201 | 今天的次数用完啦! | → 去控制台看看剩余额度或购买更多次数 |
| 10003 | 讯飞服务器可能在“打盹” | → 稍等几秒再试一次看看? |
| 错误码 | 发生了什么呀 | 温柔提示语 |
|---|---|---|
| 0 | 成功啦!超棒的! | 恭喜恭喜!识别成功啦~ (灬°ω°灬) |
| 10003 | 平台有点小状况 | 讯飞服务器可能暂时忙起来了,等几秒钟再试一次看看?成功率很高的! |
| 10004 | 会话模式不太对 | 这个情况比较少见呢...如果一直出现的话,我们可以一起提交工单问问讯飞工程师~ |
| 10008 | 服务实例有问题 | 少见的情况!提交工单让技术小哥哥/小姐姐看看? |
| 10009 | 输入的数据格式不对 | 请检查一下:<br>• 图片格式对不对呀?(支持 png/jpg/bmp/gif/tif/pdf)<br>• 图片有没有损坏呀?<br>• 试试用图片查看器打开看看能不能显示? |
| 10010 | 授权额度不太够 | 去看看讯飞控制台吧,看看套餐是不是过期啦?或者额度用完了呢? (。•́︿•̀。)<br>💰 需要更多额度?点击购买 |
| 10019 | 等太久啦,超时了 | 可能图片太大啦!试着压缩一下图片,或者网络慢一点也会这样哦~ |
| 10105 | 最常见的问题! 认证失败啦 | 哎呀,这个一定要检查仔细哦:<br>① XFYUN_APP_ID 填好了吗?<br>② XFYUN_API_KEY 正确吗?<br>③ XFYUN_API_SECRET 没问题吧?<br>💡 小提示:从讯飞控制台直接复制粘贴是最好的方式,千万别手打哦,容易出错! |
| 10114 | 会话超时啦 | 识别大图片需要耐心一点哦,确保网络稳定再试一次? |
| 10118 | 服务端解析失败 | 这是讯飞平台的问题啦,重试几次看看?如果一直不行就提交工单~ |
| 10139 | 参数不对 | 检查一下调用的参数有没有写错? |
| 10160 | JSON 解析失败 | 检查一下代码里有没有什么特殊字符打扰到了? |
| 10161 | Base64 编码失败 | 确认图片是用 Base64 编码的哦~ 注意不要带文件头(就是不要 data:image/xxx;base64, 这个前缀!) |
| 10163 | 参数校验失败 | 看看错误信息里怎么说的:<br>• 说“图片为空”?→ 检查图片读取<br>• 说“图片太大”?→ 压个缩,4MB 以下最好~<br>• 其他... → 可能是格式不支持哦 |
| 10200 | 很常见! 读不到图片 | 嗨呀,检查一下:<br>① 文件路径对不对呀?(相对路径要写对哦)<br>② 图片文件有没有损坏?(用预览打开试试?)<br>③ 文件名有没有奇怪符号?(尽量用英文名试试?)<br>💡 快速确认文件是否存在往下看 ↓ |
Q: 一直提示 "10105 Unauthorized" 怎么破?(╥﹏╥)
别急别急,十有八九是环境变量的问题!按这个顺序检查:
- 三个环境变量都设好了吗?(
XFYUN_APP_ID,XFYUN_API_KEY,XFYUN_API_SECRET)- 值是直接从讯飞控制台复制的吗?手打的话很容易漏掉字符哦!
✨ 快速确认环境变量(复制粘贴运行):
# macOS / Linux 用户复制这行: echo "XFYUN_APP_ID: $XFYUN_APP_ID | XFYUN_API_KEY: $XFYUN_API_KEY | XFYUN_API_SECRET: $XFYUN_API_SECRET" # Windows 用户在 cmd 里运行这行: echo XFYUN_APP_ID: %XFYUN_APP_ID% ^|^| XFYUN_API_KEY: %XFYUN_API_KEY% ^|^| XFYUN_API_SECRET: %XFYUN_API_SECRET%如果显示为空或者显示错误,那就是还没设好哦!设置方法:
- macOS/Linux: 在终端运行
export XFYUN_APP_ID=你的值,然后echo 'export XFYUN_APP_ID=你的值' >> ~/.zshrc永久保存- Windows: 按 Win+R → 输入
sysdm.cpl→ 高级 → 环境变量 → 新建
Q: 提示 "10200 read data timeout" 怎么办呀?(;´Д`)
一般是这几个原因:
- 路径写错啦(注意相对路径和绝对路径的区别)
- 图片文件坏掉了(用系统预览打开看看?)
- 文件名有中文或特殊符号(试试改成英文名?)
✨ 快速确认文件是否存在(复制粘贴运行):
# 检查文件是否存在(替换成你的文件路径) ls -la /path/to/your/invoice.png # 或者用这个命令查看当前目录下的图片文件 ls -la *.png *.jpg *.jpeg *.bmp *.pdf 2>/dev/null如果显示 "No such file or directory",那就是路径不对哦!
Q: 提示 "11201 auth no enough license" 是啥意思呀?
哈哈,免费额度用光光啦!讯飞免费版每天有限制次数~
- 方案1:休息一下,第二天再战!(额度会刷新)
- 方案2:豪气地购买付费套餐 🚀
💰 需要更多次数?点击这里直接购买:https://www.xfyun.cn/services/Invoice_recognition?target=price
Q: 图片太大识别好慢怎么破?(´;ω;`)
来来来,试试这些小技巧:
- 压缩图片到 1-2MB
- 裁剪掉多余的背景部分
- 分辨率保持在 2000x2000 以内
遇到问题先别慌!环境变量和文件路径 是最容易出错的环节,检查一遍往往就能搞定~
如果还有问题,把错误信息里的 sid 字段保存下来哦,这个可以帮讯飞技术定位问题!
记住:你一定可以的! (๑•̀ㅂ•́)و✧ 有问题随时来问我呀~
| 10221 | 找不到可用连接 | 可能讯飞服务器现在有点忙,等几分钟再试试? |
| 10222 / 10223 | 负载均衡找不到节点 | 技术问题,提交工单处理一下吧~ |
| 10225 | 找不到业务服务 | 检查一下 API 地址有没有写错? |
| 10300 / 10301 | 排序缓冲区出问题啦 | 内部问题,提交工单吧~ |
| 10313 | 敲黑板!最常见! AppID 不匹配 | 这个问题最多人遇到啦!请确认:<br>① 三个环境变量都设置了!<br>② XFYUN_APP_ID 是 AppID,不是 API Key 哦!<br>③ 确认应用和 API Key 在同一个讯飞账号下!<br>💡 检查环境变量的快捷命令往下看 ↓ |
| 10317 | 版本号不对 | 检查一下 API 版本参数? |
| 10400 / 10401 | 协议序列化出错 | 内部问题,提交工单~ |
| 10500 | 内部同步出错 | 先重试一次看看?可能只是临时小状况! |
| 10600 | 事件异常 | 提交工单处理一下吧~ |
| 10700 | 权限不足 | 去讯飞控制台看看应用权限设置? |
| 11200 | 功能未授权 | 可能情况:<br>① 开通的服务和调用的 API 不匹配<br>② 服务过期啦<br>③ 这个应用没开通这个功能<br>💡 去讯飞控制台 → 我的应用 → 账号服务权限 看看?<br>🚀 需要开通服务?去看看有哪些套餐 |
| 11201 | 日限额到啦! | 免费版每天有次数限制哦:<br>• 方案1:等到明天,次数会刷新~<br>• 方案2:去讯飞控制台升级付费套餐 💰<br>🚀 一键购买入口:https://www.xfyun.cn/services/Invoice_recognition?target=price |
| 11502 / 11503 | 服务器内部错误 | 一般重试几次就好啦,持续报错请联系讯飞~ |
| 100001~100010 | 引擎初始化失败 | 技术大大们需要介入啦,提交工单吧! |