Python OCR 文字识别 API 接入完整教程

在开发过程中,我们经常需要对图片进行文字识别,例如身份证识别、发票识别、文档扫描等场景。使用 OCR(Optical Character Recognition,光学字符识别)API 可以快速实现这些功能。本文将以 Python 为例,带你完成 OCR 文字识别 API 接入全过程,并提供在线体验和实用优化建议。

一、准备工作

  1. 注册 OCR API 服务

    我们以石榴智能OCR接入API为示例,注册后可获得 API KeySecret Key

  2. 安装 Python 依赖库

    bash 复制代码
    pip install requests pillow
    • requests:用于发送 HTTP 请求

    • Pillow:用于图片处理,可选

  3. 准备测试图片

    图片可以是身份证、票据、文档扫描件等。

二、API 请求方式简介

OCR API 通常需要发送以下参数:

  • image:图片 Base64 编码或 URL

  • type:识别类型(如 id_cardinvoicegeneral

  • language:可选,多语言识别

示意请求格式:

请求URL:

python 复制代码
POST http(s)://ocr-api.shiliuai.com/api/advanced_general_ocr/v1

请求方式:

请求头

参数 类型 说明
Authorization string 'APPCODE ' + 您的AppCode
Content-Type string application/json

请求体

参数 是否必填 类型 说明
image_base64 选填 string 图片Base64;与image_url二选一;像素[15,8192];小于20M
image_url 选填 string 图片URL;与image_base64二选一;像素[15,8192];小于20M
is_line 选填 bool 是否为单行文字,默认False

返回信息:

返回结构

参数名 类型 说明
code int 错误码
msg string 错误信息(英文)
msg_cn string 错误信息(中文)
success bool 识别是否成功
image_id string 请求图片ID
request_id string 唯一请求ID
data data 具体看下面

以下是返回示例

python 复制代码
data 成功示例:
data = {
       "content":
       [
              {
                     "text": "你好", // string, 文字内容
                     "prob": 0.995, // float, [0, 1], 文字内容置信度
                     "keypoints": [ // list, 文字区域四个角的位置,以文字的左上角为起点,按顺时针顺序排列,单行文字没有此项
                            {"x":50, "y":20},
                            {"x":150, "y":20},
                            {"x":150, "y":60},
                            {"x":50, "y":60}
                            ]
              },
              ......
       ]
}
data 失败示例:
data = {}

三、Python 接入示例

python 复制代码
# API文档:https://market.shiliuai.com/doc/advanced-general-ocr
# -*- coding: utf-8 -*-
import requests
import base64
import json

# 请求接口
URL = "https://ocr-api.shiliuai.com/api/general_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 = {"image_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)

四、识别效果示例

五、常见优化技巧

  1. 清晰图片优先

    模糊、倾斜、反光的图片识别率低,建议先做简单预处理。

  2. 裁剪或分区识别

    对身份证、发票等图片按区域识别,可提高精度。

  3. 批量或异步处理

    对多张图片,可使用队列或多线程异步调用 API。

  4. 错误处理

    网络异常、识别失败或 API 错误码都需处理,保证程序稳定。

六、在线体验与多语言文档

七、总结

本文介绍了 Python 调用 OCR API 的完整流程,包括:

  • 注册 API 并获取密钥

  • Python 依赖安装及图片准备

  • API 请求示例及识别结果处理

  • 图片优化和错误处理技巧

  • 在线体验与文档参考

通过 OCR API,你可以快速将文字识别能力集成到网站、桌面应用或移动端应用中,实现身份证识别、票据识别、文档扫描等多场景需求。

相关推荐
芯盾时代2 小时前
RSAC 2026观察 智能体治理崛起
网络·人工智能·网络安全·智能体
会飞的胖达喵2 小时前
基于qt开发的RedisDesk
开发语言·qt
信看2 小时前
看所有网卡参数,确认 RM520N-GL 网卡
开发语言·python
qq_189807032 小时前
c++怎么解决ifstream在读取UTF-16文件时的乱码_imbue用法【避坑】
jvm·数据库·python
不过如此19512 小时前
pyinstaller打包GUI项目实践
windows·python·ui
十铭忘2 小时前
Scaling Latent Reasoning via Looped Language Models:通过循环语言模型扩展潜在推理
人工智能
油炸自行车2 小时前
【Qt】运行 `windeployqt.exe` 打包Qt发布包,遇到警告的解决方法 (Warning: Cannot find any.....)
开发语言·qt·vs·打包·windeployqt·软件部署
yu85939582 小时前
C++ 虚拟磁盘与虚拟光驱实现
开发语言·c++
青苔猿猿2 小时前
【3】jupyter单元格Cell操作
python·jupyter·单元格