基于腾讯云AI SDK实现的Java商品识别系统,支持商品图片、条码、二维码识别。系统提供完整的错误处理和日志记录,支持本地文件和URL两种输入方式,并提供详细的识别结果和置信度。
java-product-recognition/
├── src/
│ └── main/
│ ├── java/com/product/recognition/
│ │ ├── ProductRecognitionService.java # 核心识别服务类
│ │ ├── TencentCloudConfig.java # 腾讯云配置类(支持CSV配置)
│ │ ├── ProductRecognitionResult.java # 商品识别结果类
│ │ ├── CodeRecognitionResult.java # 代码识别结果基类
│ │ ├── BarcodeRecognitionResult.java # 条码识别结果类
│ │ ├── QrcodeRecognitionResult.java # 二维码识别结果类
│ │ ├── ProductRecognitionDemo.java # 完整演示类
│ │ └── ProductRecognitionExample.java # 简化示例类
│ └── resources/
│ ├── config.properties # 配置文件
│ └── logback.xml # 日志配置
├── SecretKey.csv # 腾讯云密钥文件(CSV格式)
└── pom.xml # Maven配置文件
项目支持两种配置方式:
在项目根目录或父目录创建 SecretKey.csv 文件,格式如下:
SecretId,SecretKey
AKID3yinhPxKTSFpDRSIUZR6lETURGtKYaR6,Wr1zluqb8UecP0OaaNxKVU4RcbM1f7OW
编辑 src/main/resources/config.properties 文件:
tencentcloud.secretId=your_secret_id_here
tencentcloud.secretKey=your_secret_key_here
tencentcloud.region=ap-guangzhou
系统会优先使用CSV文件中的配置,如果CSV文件不存在则使用properties文件。
cd java-product-recognition
mvn clean compile
# 运行完整演示
mvn exec:java -Dexec.mainClass="com.product.recognition.ProductRecognitionDemo"
# 运行简化示例
mvn exec:java -Dexec.mainClass="com.product.recognition.ProductRecognitionExample"
// 自动从SecretKey.csv或config.properties加载配置
TencentCloudConfig config = TencentCloudConfig.loadDefault();
// 创建识别服务
ProductRecognitionService service = new ProductRecognitionService(config);
// 识别商品图片
ProductRecognitionResult result = service.recognizeProductByFile("product.jpg");
if (result.isSuccess()) {
System.out.println("商品名称: " + result.getProductName());
System.out.println("条码: " + result.getBarcode());
}
// 识别条码
BarcodeRecognitionResult barcodeResult = service.recognizeBarcodeByFile("barcode.jpg");
if (barcodeResult.isSuccess()) {
System.out.println("条码内容: " + barcodeResult.getCodeContent());
}
// 手动指定密钥
ProductRecognitionService service = new ProductRecognitionService(
"your_secret_id",
"your_secret_key",
"ap-guangzhou"
);
// 使用方式与上面相同
// 识别二维码
QrcodeRecognitionResult qrcodeResult = service.recognizeQrcodeByFile("qrcode.jpg");
if (qrcodeResult.isSuccess()) {
System.out.println("二维码内容: " + qrcodeResult.getCodeContent());
}
| 字段 | 类型 | 说明 |
|---|---|---|
| success | boolean | 识别是否成功 |
| productName | String | 商品名称 |
| barcode | String | 商品条码 |
| candy | String | 糖果类商品信息 |
| vegetable | String | 蔬菜类商品信息 |
| body | String | 商品主体信息 |
| confidence | double | 识别置信度(0-100) |
| errorMessage | String | 错误信息(失败时) |
| 字段 | 类型 | 说明 |
|---|---|---|
| success | boolean | 识别是否成功 |
| codeContent | String | 条码/二维码内容 |
| codeType | String | 代码类型 |
| polygon | String[] | 代码位置坐标 |
| confidence | double | 识别置信度(0-100) |
| errorMessage | String | 错误信息(失败时) |
所有识别方法都返回相应的Result对象,通过isSuccess()方法判断识别是否成功:
ProductRecognitionResult result = service.recognizeProductByFile("product.jpg");
if (result.isSuccess()) {
// 处理成功结果
System.out.println(result.getProductName());
} else {
// 处理错误
System.err.println(result.getErrorMessage());
}
日志配置文件位于 src/main/resources/logback.xml,默认配置: