2026 扑克牌识别API实战:AI自动识别花色、点数(附Python/Java/PHP代码)
前言
在游戏开发、棋牌平台、智能桌游、机器人视觉以及自动化设备中,经常需要识别扑克牌的信息,例如:
- ♠ 黑桃
- ♥ 红桃
- ♦ 方块
- ♣ 梅花
- 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识别率提升实战:模糊 / 倾斜 / 反光图片全套优化方案(附 Python / Java / PHP 代码)》
更多推荐



所有评论(0)