前言

在游戏开发、棋牌平台、智能桌游、机器人视觉以及自动化设备中,经常需要识别扑克牌的信息,例如:

  • ♠ 黑桃
  • ♥ 红桃
  • ♦ 方块
  • ♣ 梅花
  • A、2、3……K 等点数

传统方案通常采用 OpenCV 模板匹配,不仅开发复杂,而且容易受到光照、旋转、遮挡等因素影响。

如今,AI 视觉识别 API 已经可以直接完成扑克牌识别,无需训练模型,只需上传图片即可返回结构化结果,大幅降低开发成本。

本文将介绍扑克牌识别 API 的原理、应用场景及 Python、Java、PHP 调用示例。


什么是扑克牌识别 API?

扑克牌识别 API 是基于 AI 图像识别技术的接口服务。

上传一张扑克图片,即可自动识别:

  • 花色(黑桃、红桃、梅花、方块)
  • 点数(A~K)
  • 多张扑克牌位置
  • 坐标信息
  • 识别置信度

返回 JSON 数据,方便业务系统直接使用。

例如:

{
    "cards":[
        {
            "suit":"Spade",
            "rank":"A",
            "confidence":99.8
        },
        {
            "suit":"Heart",
            "rank":"10",
            "confidence":99.5
        }
    ]
}

扑克牌识别有哪些应用?

目前主要应用于以下场景:

棋牌游戏

例如:

  • 斗地主
  • 德州扑克
  • 二十一点
  • 桥牌
  • 棋牌游戏直播

自动识别桌面牌面。


AI机器人

机器人摄像头识别扑克。

实现:

  • 自动抓牌
  • 自动摆牌
  • 自动分类

自动发牌设备

发牌机实时检测:

  • 是否漏牌
  • 是否重牌
  • 是否识别错误

游戏直播分析

实时分析:

  • 手牌
  • 公共牌
  • 胜率

生成数据统计。


棋牌游戏测试

自动化测试过程中:

利用截图即可判断:

当前牌面是否正确。

无需人工核对。


为什么不用 OpenCV?

很多开发者第一时间想到:

OpenCV。

虽然可以实现:

  • 模板匹配
  • 特征点匹配
  • 边缘检测

但是存在不少问题:

  • 光照变化影响较大
  • 旋转角度需要额外处理
  • 多张扑克检测复杂
  • 模板维护成本高
  • 不同牌面需要重新制作模板

AI 视觉识别 API 则无需维护模板,能够适应更多实际场景,开发效率更高。


Python 调用示例

# ==============================================================================
# 免费在线体验:https://market.shiliuai.com/tools/poker-recognition
# API文档完整开发文档和代码示例:https://market.shiliuai.com/doc/poker-recognition-ocr
# 支持免费在线体验
# API文档清晰,提供多种接入语言示例(如python、js、C#、java、php等),以及自动化脚本语言(如天诺、懒人精灵、按键精灵、易语言、EasyClick、触动精灵等)
#
# ----- 配置信息 -----
# 从石榴智能API市场获取API_KEY或SECRET_KEY:https://market.shiliuai.com/
# ==============================================================================


# -*- coding: utf-8 -*-
import requests
import base64
import json

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

Java 调用示例

// ==============================================================================
// 免费在线体验:https://market.shiliuai.com/tools/poker-recognition
// API文档完整开发文档和代码示例:https://market.shiliuai.com/doc/poker-recognition-ocr
// 支持免费在线体验
// API文档清晰,提供多种接入语言示例(如python、js、C#、java、php等),以及自动化脚本语言(如天诺、懒人精灵、按键精灵、易语言、EasyClick、触动精灵等)
//
// ----- 配置信息 -----
// 从石榴智能API市场获取API_KEY或SECRET_KEY:https://market.shiliuai.com/
// ==============================================================================

//main.java
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/game_ocr/v1";// 请求接口
        String appcode = "你的APPCODE";
        String imgFile = "本地图片路径";

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

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

        try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
            // 创建POST请求
            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();
        }
    }
}

PHP 调用示例

// ==============================================================================
// 免费在线体验:https://market.shiliuai.com/tools/poker-recognition
// API文档完整开发文档和代码示例:https://market.shiliuai.com/doc/poker-recognition-ocr
// 支持免费在线体验
// API文档清晰,提供多种接入语言示例(如python、js、C#、java、php等),以及自动化脚本语言(如天诺、懒人精灵、按键精灵、易语言、EasyClick、触动精灵等)
//
// ----- 配置信息 -----
// 从石榴智能API市场获取API_KEY或SECRET_KEY:https://market.shiliuai.com/
// ==============================================================================

//图片转base64
function get_base64($path){
    if($fp = fopen($path, "rb", 0)) {
        $binary = fread($fp, filesize($path));// 文件读取
        fclose($fp);
        $b64 = base64_encode($binary);// 转base64
    }else{
        $b64="";
        printf("%s 文件不存在", $path);
    }
    return $b64;
}

$url = "https://ocr-api.shiliuai.com/api/game_ocr/v1";
$appcode = "你的appcode";
$img_path = "图片路径";
$method = "POST";

//请求头
$headers = array();
array_push($headers, "Authorization:APPCODE " . $appcode);
array_push($headers, "Content-Type:application/json");

//请求体
$b64 = get_base64($img_path);
$data = array(
    "image_base64" => $b64
);
$post_data = json_encode($data);

//请求
$curl = curl_init();
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_FAILONERROR, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);

$result = curl_exec($curl);
var_dump($result);

AI 扑克牌识别 API 的优势

相比传统方案,API 具有以下优势:

  • 无需训练 AI 模型
  • 无需 OpenCV 调参
  • 支持多张扑克牌同时识别
  • 支持旋转、倾斜图片识别
  • JSON 结构化返回
  • 接入简单,适合快速上线

对于需要快速实现扑克识别功能的项目,API 方案能够显著降低开发和维护成本。


为什么推荐石榴智能?

石榴智能扑克识别:

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

如果项目除了扑克牌识别,还涉及 OCR 和图片处理能力,那么可以选择统一的 AI 能力平台。

石榴智能提供:

  • OCR 文字识别 API
  • 身份证 OCR API
  • 发票 OCR API
  • 医疗票据 OCR API
  • 营业执照 OCR API
  • 图片去水印 API
  • 智能抠图 API
  • 图片变清晰 API
  • 证件照制作 API

同时提供:

  • 在线工具免费体验
  • 完整 API 文档
  • Python、Java、PHP、JavaScript、C# 示例代码
  • 易语言、按键精灵、懒人精灵、天诺、触动精灵、EasyClick 等自动化脚本示例

对于企业项目和开发者来说,可以统一完成 OCR 与 AI 图像处理能力的接入,降低集成成本。


总结

扑克牌识别广泛应用于棋牌游戏、机器人视觉、智能设备和自动化测试等领域。

与传统 OpenCV 模板匹配相比,AI 扑克牌识别 API 具有识别准确率高、开发周期短、维护简单等优势,更适合企业级项目快速落地。

如果项目还涉及 OCR、证件识别或图片处理,建议选择支持多种 AI 能力的平台,实现统一接口管理和快速开发。


推荐阅读

《OCR API 接口怎么调用?2026 从0到1完整接入指南(Python/Java/PHP/C#)》

《2026 OCR API 接口推荐与选型指南(开发者必看)》

《OCR 在线识别 + API 接口实战:从网页验证到系统集成》

《文字识别通用OCR接口调用与功能说明》

《OCR识别率提升实战:模糊 / 倾斜 / 反光图片全套优化方案(附 Python / Java / PHP 代码)》

《图片变清晰 API 实战:模糊图片一键变高清(附 Python / Java / PHP 完整代码)》

《【组合实战】OCR + 图片去水印 API:自动清洗图片再识别文字(完整方案 + 代码示例)》

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐