智能购物系统 - 商品识别模块

| 商品图片识别 | 条码识别 | 二维码识别

项目简介

基于腾讯云AI SDK实现的Java商品识别系统,支持商品图片、条码、二维码识别。系统提供完整的错误处理和日志记录,支持本地文件和URL两种输入方式,并提供详细的识别结果和置信度。

1

功能特性

  • 商品图片识别:识别商品图片中的商品信息
  • 条码识别:识别一维条形码
  • 二维码识别:识别二维码内容
  • 支持本地文件和URL两种输入方式
  • 提供详细的识别结果和置信度
  • 完整的错误处理和日志记录
2

技术栈

  • Java 8+
  • Maven 3.6+
  • 腾讯云OCR SDK
  • SLF4J + Logback日志框架
3

项目结构

language-bash
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配置文件
4

快速开始

1. 准备工作

2. 配置项目

项目支持两种配置方式:

方式1:使用CSV文件(推荐)

在项目根目录或父目录创建 SecretKey.csv 文件,格式如下:

language-csv
SecretId,SecretKey
AKID3yinhPxKTSFpDRSIUZR6lETURGtKYaR6,Wr1zluqb8UecP0OaaNxKVU4RcbM1f7OW

方式2:使用properties文件

编辑 src/main/resources/config.properties 文件:

language-properties
tencentcloud.secretId=your_secret_id_here
tencentcloud.secretKey=your_secret_key_here
tencentcloud.region=ap-guangzhou

注意

系统会优先使用CSV文件中的配置,如果CSV文件不存在则使用properties文件。

3. 编译项目

language-bash
cd java-product-recognition
mvn clean compile

4. 运行示例

language-bash
# 运行完整演示
mvn exec:java -Dexec.mainClass="com.product.recognition.ProductRecognitionDemo"

# 运行简化示例
mvn exec:java -Dexec.mainClass="com.product.recognition.ProductRecognitionExample"
5

使用方法

基础用法

方式1:自动加载配置(推荐)

language-java
// 自动从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());
}

方式2:手动配置

language-java
// 手动指定密钥
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());
}

支持的API方法

  • 商品识别
    • recognizeProductByUrl(String imageUrl) - 通过URL识别商品图片
    • recognizeProductByFile(String imagePath) - 通过本地文件识别商品图片
  • 条码识别
    • recognizeBarcodeByUrl(String imageUrl) - 通过URL识别条码
    • recognizeBarcodeByFile(String imagePath) - 通过本地文件识别条码
  • 二维码识别
    • recognizeQrcodeByUrl(String imageUrl) - 通过URL识别二维码
    • recognizeQrcodeByFile(String imagePath) - 通过本地文件识别二维码
  • 通用代码识别
    • recognizeCodeByFile(String imagePath) - 识别图片中的条码或二维码
6

识别结果说明

ProductRecognitionResult(商品识别结果)

字段 类型 说明
successboolean识别是否成功
productNameString商品名称
barcodeString商品条码
candyString糖果类商品信息
vegetableString蔬菜类商品信息
bodyString商品主体信息
confidencedouble识别置信度(0-100)
errorMessageString错误信息(失败时)

CodeRecognitionResult(代码识别结果)

字段 类型 说明
successboolean识别是否成功
codeContentString条码/二维码内容
codeTypeString代码类型
polygonString[]代码位置坐标
confidencedouble识别置信度(0-100)
errorMessageString错误信息(失败时)
7

依赖说明

  • tencentcloud-sdk-java-ocr:腾讯云OCR SDK
  • gson:JSON处理
  • slf4j-api + logback-classic:日志框架
  • commons-lang3:Apache工具类
8

错误处理

所有识别方法都返回相应的Result对象,通过isSuccess()方法判断识别是否成功:

language-java
ProductRecognitionResult result = service.recognizeProductByFile("product.jpg");
if (result.isSuccess()) {
    // 处理成功结果
    System.out.println(result.getProductName());
} else {
    // 处理错误
    System.err.println(result.getErrorMessage());
}
9

日志配置

日志配置文件位于 src/main/resources/logback.xml,默认配置:

  • 控制台输出
  • 文件输出到 logs/product-recognition.log
  • 日志文件按天滚动,保留30天

注意事项

10

腾讯云API文档