出租车票/行程单OCR识别API实战:差旅报销自动化,毫秒提取行程信息(附Python/Java代码)

出租车票/行程单OCR识别API实战:差旅报销自动化,毫秒提取行程信息(附Python/Java代码)

相关文章推荐

发票OCR识别API接入教程医疗票据OCR识别API实战火车票OCR识别API实战2026 OCR API终极评测

一、为什么需要出租车票/行程单OCR?

在企业差旅报销场景中,出租车票和网约车行程单是最常见也最让人头疼的报销凭证之一。传统人工录入方式存在三大痛点:

  • 效率低 :手动录入一张出租车票需要2-3分钟,遇到字迹模糊的票甚至更久

  • 错误率高:发票号码、金额等关键字段人工录入错误率高达5%以上,直接影响财务合规

  • 合规风险大:发票真伪难辨、字段完整性难校验,容易产生税务风险

出租车票/行程单OCR识别技术的核心价值:

  • 效率提升 :单张票据识别时间从人工的2-3分钟缩短至1秒内,支持批量处理

  • 成本优化 :某物流企业部署OCR识别系统后,财务部门人力成本降低40%

  • 合规保障:自动校验发票字段完整性,避免税务风险

  • 流程自动化:识别结果直接对接财务系统,实现从"拍照→识别→审核→入账"的端到端自动化

二、出租车票/行程单OCR技术原理

出租车票识别的核心在于图像预处理、文字定位、字符识别与数据校验四个环节:

  1. 图像预处理 :通过灰度化、二值化、去噪等操作提升图像质量,例如使用OpenCV的cv2.threshold()函数实现自适应阈值分割

  2. 文字定位 :采用CTPN (Connectionist Text Proposal Network)或EAST(Efficient and Accurate Scene Text Detector)算法检测发票中的文本区域

  3. 字符识别 :基于CRNN (Convolutional Recurrent Neural Network)或Transformer模型识别文字内容,结合发票模板库进行字段匹配

  4. 数据校验:通过正则表达式验证金额、日期等关键字段的格式合法性

出租车票OCR API支持识别全国各大城市 的出租车发票,同时支持网约车行程单 (如滴滴、曹操出行等平台)的识别。模型对出租车票套打偏移、油墨略微污损 等情况进行了专项优化,关键字段识别准确率超过95%

三、准备工作

石榴智能出租车票/行程单OCR识别接口:

  • 支持免费在线体验,注册API账号送免费测试积分
  • API文档清晰,提供多种接入语言示例(如python、js、C#、java、php等),以及自动化脚本语言(如天诺、懒人精灵、按键精灵、易语言、EasyClick、触动精灵等)

以石榴智能出租车票/行程单OCR识别接口API接入为例,在开始接入之前,你需要:

  1. 注册API账号 ,获取API Key或Secret Key(注册即送免费测试积分

  2. 准备一张出租车票或网约车行程单的照片(手机拍摄即可,建议票据占图片2/3以上)

  3. 选择开发语言(python、js、C#、java、php等;天诺、懒人精灵、按键精灵、易语言、EasyClick、触动精灵等)

📌 免费在线体验:https://market.shiliuai.com/tools/general-invoice-ocr

📌 API文档完整开发文档和代码示例:https://market.shiliuai.com/doc/general-invoice-ocr

免费在线体验:支持免费在线体验

完整API文档:API文档清晰,提供多种接入语言示例(如python、js、C#、java、php等),以及自动化脚本语言(如天诺、懒人精灵、按键精灵、易语言、EasyClick、触动精灵等)

注册送免费测试积分

四、多语言接入实战

以下代码均以调用出租车票/行程单OCR识别API为例 ,替换YOUR_API_KEYYOUR_SECRET_KEY为你的真实凭证即可运行。

4.1 Python接入代码

python 复制代码
# ==============================================================================
# 免费在线体验:https://market.shiliuai.com/tools/general-invoice-ocr
# API文档完整开发文档和代码示例:https://market.shiliuai.com/doc/general-invoice-ocr
# 支持免费在线体验
# API文档清晰,提供多种接入语言示例(如python、js、C#、java、php等),以及自动化脚本语言(如天诺、懒人精灵、按键精灵、易语言、EasyClick、触动精灵等)
# ==============================================================================


# ----- 配置信息 -----
# 从石榴智能API市场获取:https://market.shiliuai.com/
API_KEY = "你的API_Key"
SECRET_KEY = "你的Secret_Key"

# ----- 图片转Base64 -----
def get_base64(file_path):
    with open(file_path, 'rb') as f:
        data = f.read()
    return base64.b64encode(data).decode('utf8')
   
# -*- coding: utf-8 -*-
import requests
import base64
import json

# 请求接口
URL = "https://ocr-api.shiliuai.com/api/general_invoice_ocr/v1"

# 图片转base64
def get_base64(file_path):
    with open(file_path, 'rb') as f:
        data = f.read()
    b64 = base64.b64encode(data).decode('utf8')
    return b64


def demo(appcode, file_path):
    # 请求头
    headers = {
        'Authorization': 'APPCODE %s' % appcode,
        'Content-Type': 'application/json'
    }

    # 请求体
    b64 = get_base64(file_path)
    data = {
        "file_base64": b64
    }

    # 请求
    response = requests.post(url=URL, headers=headers, json=data)
    content = json.loads(response.content)
    print(content)


if __name__ == "__main__":
    appcode = "你的APPCODE"
    file_path = "本地文件路径"
    demo(appcode, file_path)

4.2 Java接入代码

java 复制代码
// ==============================================================================
// 免费在线体验:https://market.shiliuai.com/tools/general-invoice-ocr
// API文档完整开发文档和代码示例:https://market.shiliuai.com/doc/general-invoice-ocr
// 支持免费在线体验
// API文档清晰,提供多种接入语言示例(如python、js、C#、java、php等),以及自动化脚本语言(如天诺、懒人精灵、按键精灵、易语言、EasyClick、触动精灵等)
// ==============================================================================

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Base64;

public class Main {
    public static String get_base64(String path) {
        String b64 = "";
        try {
            // 使用Commons IO简化文件读取
            byte[] content = FileUtils.readFileToByteArray(new File(path));
            // 使用JDK自带的Base64
            b64 = Base64.getEncoder().encodeToString(content);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return b64;
    }

    public static void main(String[] args) {
        String url = "https://ocr-api.shiliuai.com/api/general_invoice_ocr/v1";// 请求接口
        String appcode = "你的APPCODE";
        String file_path = "本地文件路径";

        Map headers = new HashMap<>();
        headers.put("Authorization", "APPCODE " + appcode);
        headers.put("Content-Type", "application/json");

        // 请求体
        JSONObject requestObj = new JSONObject();
        requestObj.put("file_base64", get_base64(file_path));
        String bodys = requestObj.toString();

        try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
            HttpPost httpPost = new HttpPost(url);
            for (Map.Entry entry : headers.entrySet()) {
                httpPost.addHeader(entry.getKey(), entry.getValue());
            }
            StringEntity entity = new StringEntity(bodys, "UTF-8");
            httpPost.setEntity(entity);
            HttpResponse response = httpClient.execute(httpPost);
            int stat = response.getStatusLine().getStatusCode();
            if (stat != 200) {
                System.out.println("Http code: " + stat);
                return;
            }
            String res = EntityUtils.toString(response.getEntity());
            JSONObject res_obj = JSON.parseObject(res);
            System.out.println(res_obj.toJSONString());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

五、返回字段说明

出租车票/行程单OCR识别API通常返回以下结构化字段:

字段名 类型 说明 示例
invoice_code String 发票代码 144032200101
invoice_no String 发票号码 88888888
taxi_no String 车牌号 浙A·T8888
date String 日期 2026-07-06
boarding_time String 上车时间 08:30
landing_time String 下车时间 09:15
amount String 金额 25.50
mileage String 里程(公里) 8.5
region String 所属地区 杭州市

💡 提示 :部分API还支持返回发票类型 (出租车票/网约车行程单)、发票真伪验证结果 以及票面位置坐标等信息。

六、常见问题与解决方案

Q1:识别准确率能达到多少?

主流出租车票OCR API的关键字段识别准确率超过98% 。模型对出租车票套打偏移、油墨略微污损等情况进行了专项优化。网约车行程单由于版式相对统一,识别准确率通常更高。

Q2:支持哪些类型的票据?

支持出租车发票 (全国各大城市)和网约车行程单(如滴滴、曹操出行、T3出行等主流平台)。

Q3:图片有什么要求?

Base64编码后不超过20M。支持PNG、JPG、JPEG、BMP格式。如果图片有旋转角度,算法会自动修正。

Q4:支持批量识别吗?

支持。你可以通过循环调用API实现批量识别,也可以使用混贴票据识别接口,在一张图片中同时识别多张不同类型的票据。

Q5:调用失败了怎么办?

常见原因包括:图片格式不支持、图片过大、非出租车票/行程单照片、拍摄角度导致无法识别。建议检查图片格式和大小,确保票据清晰可见。

七、总结

出租车票/行程单OCR识别API能够帮助开发者在3分钟 内完成接入,自动提取发票代码、发票号码、车牌号、日期、上下车时间、金额、里程等关键字段,识别时间缩短至1秒内 ,广泛应用于企业费控报销、财务自动化、差旅管理等场景。

立即体验

  • 🔗 免费在线体验:支持免费在线体验

  • 📖 完整API文档:API文档清晰,提供多种接入语言示例(如python、js、C#、java、php等),以及自动化脚本语言(如天诺、懒人精灵、按键精灵、易语言、EasyClick、触动精灵等)

  • 🎁 注册送免费测试积分

  • 💻 多语言SDK下载:支持Python/Java/PHP/JS/C#/Go等多种语言,以及天诺、懒人精灵、按键精灵、易语言、EasyClick、触动精灵等自动化脚本语言

相关阅读

相关推荐
夜雪一千3 小时前
Python enumerate() 函数完整详解:遍历同时获取索引,告别手动计数
服务器·windows·python
能有时光4 小时前
PyTorch KernelAgent 源码解读 ---(4)--- ExtractorAgent
人工智能·pytorch·python
_Jimmy_4 小时前
Python 协程库如何使用以及有哪些使用场景
python
aqi004 小时前
15天学会AI应用开发(十七)使用LangGraph实现会话记忆功能
人工智能·python·大模型·ai编程·ai应用
第一程序员5 小时前
Rust Agent 子进程执行:Command 之前,先定义输入和超时
python·rust·github
skywalk81635 小时前
设计并实现段言的 C FFI 绑定机制 @Trae
c语言·开发语言·python·编程
weixin_BYSJ19875 小时前
SpringBoot + MySQL 乒乓球运动员信息管理系统项目实战--附源码04954
java·javascript·spring boot·python·django·flask·php
EQUINOX17 小时前
【论文阅读】| MoCo精读
论文阅读·人工智能·python·深度学习·机器学习
用户8356290780517 小时前
使用 Python 自动化 Excel 公式和函数:完整指南
后端·python
敲代码的嘎仔8 小时前
实习日志day6--实习日志day6--title命名规范化&businessType纠正&补充缺失的@Log注解&报警与通信模块补充&产出阶段总结文档
java·开发语言·人工智能·git·python·实习·大二