PHPackages                             overtrue/laravel-qcs - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. overtrue/laravel-qcs

Abandoned → [overtrue/laravel-qcloud-content-audit](/?search=overtrue%2Flaravel-qcloud-content-audit)Library

overtrue/laravel-qcs
====================

腾讯云内容安全（文字图片内容审核）服务

4.0.1(2y ago)452275[2 issues](https://github.com/overtrue/laravel-qcloud-content-audit/issues)MITPHPCI failing

Since Jun 8Pushed 5mo ago1 watchersCompare

[ Source](https://github.com/overtrue/laravel-qcloud-content-audit)[ Packagist](https://packagist.org/packages/overtrue/laravel-qcs)[ GitHub Sponsors](https://github.com/overtrue)[ RSS](/packages/overtrue-laravel-qcs/feed)WikiDiscussions master Synced today

READMEChangelog (10)Dependencies (8)Versions (24)Used By (0)

腾讯云内容安全（文字图片内容审核）服务
===================

[](#腾讯云内容安全文字图片内容审核服务)

---

[![CI](https://github.com/overtrue/Laravel-qcloud-content-audit/actions/workflows/ci.yml/badge.svg)](https://github.com/overtrue/Laravel-qcloud-content-audit/actions/workflows/ci.yml)[![Latest Stable Version](https://camo.githubusercontent.com/e5947074b963edc96f6b83088607bdfc4f91ccda90667d1e0a678a8d4740f9bc/68747470733a2f2f706f7365722e707567782e6f72672f6f766572747275652f4c61726176656c2d71636c6f75642d636f6e74656e742d61756469742f762f737461626c652e737667)](https://packagist.org/packages/overtrue/Laravel-qcloud-content-audit)[![Latest Unstable Version](https://camo.githubusercontent.com/33b6335a449be42ca0fb0c1c52afc468b477eaa566863b5883a7c91b03339500/68747470733a2f2f706f7365722e707567782e6f72672f6f766572747275652f4c61726176656c2d71636c6f75642d636f6e74656e742d61756469742f762f756e737461626c652e737667)](https://packagist.org/packages/overtrue/Laravel-qcloud-content-audit)[![Total Downloads](https://camo.githubusercontent.com/5330c0217f8f1c99837e60f884a47e0a5909ef12d4f0f1cc91420e9387d61416/68747470733a2f2f706f7365722e707567782e6f72672f6f766572747275652f4c61726176656c2d71636c6f75642d636f6e74656e742d61756469742f646f776e6c6f616473)](https://packagist.org/packages/overtrue/Laravel-qcloud-content-audit)[![License](https://camo.githubusercontent.com/efeab0f28a68beae15bacb5ce6696b0aa2519440ff87021f3989c03e0250cfb7/68747470733a2f2f706f7365722e707567782e6f72672f6f766572747275652f4c61726176656c2d71636c6f75642d636f6e74656e742d61756469742f6c6963656e7365)](https://packagist.org/packages/overtrue/Laravel-qcloud-content-audit)

T-Sec 天御内容安全服务使用了深度学习技术，识别文本/图片中出现的可能令人反感、不安全或不适宜内容，支持用户配置词库/图片黑名单，识别自定义的识别类型。

- 📖 [TMS 官方 API 文档](https://cloud.tencent.com/product/tms)
- 📖 [IMS 官方 API 文档](https://cloud.tencent.com/product/ims)

[![Sponsor me](https://github.com/overtrue/overtrue/raw/master/sponsor-me-button-s.svg?raw=true)](https://github.com/sponsors/overtrue)

Installing
----------

[](#installing)

```
$ composer require overtrue/Laravel-qcloud-content-audit -vvv
```

### Config

[](#config)

请在 `config/services.php` 中配置以下内容：

```
    //...
    // 文字识别服务
    'tms' => [
        'secret_id' => env('TMS_SECRET_ID'),
        'secret_key' => env('TMS_SECRET_KEY'),
        'endpoint' => env('TMS_ENDPOINT'),

        // 可选，默认使用腾讯云默认策略
        'biz_type' => env('TMS_BIZ_TYPE'),
        // 可选，开启后跳过 tms 识别/打码功能
        'dry' => env('TMS_DRY', false),
    ],

    // 图片审核/识别服务
    'ims' => [
        'secret_id' => env('IMS_SECRET_ID'),
        'secret_key' => env('IMS_SECRET_KEY'),
        'endpoint' => env('IMS_ENDPOINT'),

        // 可选，默认使用腾讯云默认策略
        'biz_type' => env('IMS_BIZ_TYPE'),
        // 可选，开启后跳过 ims 识别功能
        'dry' => env('IMS_DRY', false),
    ],
```

API
---

[](#api)

### 获取检查结果

[](#获取检查结果)

调用对应 API 返回数组结果，返回值结构请参考官方 API 文档。

#### 文本

[](#文本)

> 接口请求频率限制：1000次/秒。

```
use Overtrue\LaravelQcloudContentAudit\Tms;

array Tms::check(string $input);
```

#### 图片

[](#图片)

> - 接口请求频率限制：100次/秒。
> - 图片检测接口为图片文件内容，大小不能超过5M
> - 图片将会缩放成 300\*300 后检查

```
use Overtrue\LaravelQcloudContentAudit\Ims;

array Ims::check(string $contents);
```

Tip

`$contents` 可以为：图片内容、图片本地路径或 URL。

### 检查并返回是否通过

[](#检查并返回是否通过)

```
use Overtrue\LaravelQcloudContentAudit\Tms;
use Overtrue\LaravelQcloudContentAudit\Ims;

bool Tms::validate(string $contents, string $strategy = 'strict')
bool Ims::validate(string $contents, string $strategy = 'strict')
```

### 直接替换敏感文本内容

[](#直接替换敏感文本内容)

直接将检测到的敏感词替换为 `*`：

```
use Overtrue\LaravelQcloudContentAudit\Tms;

string Tms::mask(string $input, string $char = '*', string $strategy = 'strict');

// 示例：
echo Tms::mask('这是敏感内容哦');
// "这是**哦"
```

在模型中使用
------

[](#在模型中使用)

### 文本校验（CheckTextWithTms）

[](#文本校验checktextwithtms)

Warning

此操作为同步，可能会影响接口性能，谨慎使用

```
use Illuminate\Database\Eloquent\Model;
use Overtrue\LaravelQcloudContentAudit\Traits\CheckTextWithTms;

class Post extends Model
{
    // 文本校验
    use CheckTextWithTms;

    protected array $tmsCheckable = ['name', 'description'];
    protected string $tmsCheckStrategy = 'strict'; // 可选，默认使用最严格模式

    //...
}
```

### 文本打码（MaskTextWithTms）

[](#文本打码masktextwithtms)

异步检测到敏感内容时替换为 \* 号。

```
use Illuminate\Database\Eloquent\Model;
use Overtrue\LaravelQcloudContentAudit\Traits\MaskTextWithTms;

class Post extends Model
{
    use MaskTextWithTms;

    protected $tmsMaskable = ['name', 'description'];
    // protected $tmsMaskStrategy = 'strict'; // 开启打码的策略情况，可选，默认使用最严格模式

    //...
}
```

Warning

此行为为异步，默认监听模型 `saved` 事件，触发 `MaskModelAttributes::dispatch($model)`，如需禁用此行为，可如下设置：

```
protected bool $tmsMaskOnSaved = false;
```

使用表单校验规则
--------

[](#使用表单校验规则)

您可以在表单验证时使用 `tms` 或者 `tms:{strategy}` 模式来进行表单验证：

```
$this->validate($request, [
	'name' => 'required|tms',   // 使用默认 strict 策略
	'avatar' => 'required|url|ims', // 使用默认 strict 策略
	'description' => 'required|tms:strict', // 使用指定策略
	'logo_url' => 'required|url|ims:logo',  // 使用指定策略
]);
```

配置策略
----

[](#配置策略)

你可以通过以下方式注册一个或多个自定义校验规则，决定是否通过校验：

```
// 文字
Tms::setStrategy('strict', function($result) {
	return $result['Suggestion'] === 'Pass';
});

// 图片
Ims::setStrategy('logo', function($result) {
	return $result['Suggestion'] === 'Pass';
});
```

Tip

- 接口返回值中 Suggestion 有三种返回值：Block：建议屏蔽，Review ：建议人工复审，Pass：建议通过，
- 另外还有一个 Score，该字段用于返回当前标签（Label）下的置信度，取值范围：0（置信度最低）-100（置信度最高 ），越高代表文本越有可能属于当前返回的标签；如：色情 99，则表明该文本非常有可能属于色情内容；色情 0，则表明该文本不属于色情内容

### Events

[](#events)

当文字被检测敏感并打码的时候，将会触发事件：

`Overtrue\LaravelQcloudContentAudit\Events\ModelAttributeTextMasked`

你可以监听该事件，以获取检测结果：

- `$event->origin` 检测前的原始内容，如 `这是敏感内容`
- `$event->result` 打码后的结果，如 `这是**内容`
- `$event->model` 模型对象
- `$event->attribute` 模型属性名，如 `name`

异常处理
----

[](#异常处理)

验证失败将抛出以下异常：

- `Overtrue\LaravelQcloudContentAudit\InvalidTextException`
    - `$contents` - (string) 被检测的文本内容
    - `$response` - (array) API 原始返回值
- `Overtrue\LaravelQcloudContentAudit\InvalidImageException`
    - `$response` - (array) API 原始返回值

❤️ Sponsor me
-------------

[](#heart-sponsor-me)

如果你喜欢我的项目并想支持它，[点击这里 ❤️](https://github.com/sponsors/overtrue)

Project supported by JetBrains
------------------------------

[](#project-supported-by-jetbrains)

Many thanks to Jetbrains for kindly providing a license for me to work on this and other open-source projects.

[![](https://camo.githubusercontent.com/3cf726e7cdadba47755b7f7ea4227945a92a2fa48aadf4a2573140ec6501c989/68747470733a2f2f7265736f75726365732e6a6574627261696e732e636f6d2f73746f726167652f70726f64756374732f636f6d70616e792f6272616e642f6c6f676f732f6a625f6265616d2e737667)](https://www.jetbrains.com/?from=https://github.com/overtrue)

Contributing
------------

[](#contributing)

You can contribute in one of three ways:

1. File bug reports using the [issue tracker](https://github.com/overtrue/laravel-package/issues).
2. Answer questions or fix bugs on the [issue tracker](https://github.com/overtrue/laravel-package/issues).
3. Contribute new features or update the wiki.

*The code contribution process is not very formal. You just need to make sure that you follow the PSR-0, PSR-1, and PSR-2 coding guidelines. Any new code contributions must be accompanied by unit tests where applicable.*

PHP 扩展包开发
---------

[](#php-扩展包开发)

> 想知道如何从零开始构建 PHP 扩展包？
>
> 请关注我的实战课程，我会在此课程中分享一些扩展开发经验 —— [《PHP 扩展包实战教程 - 从入门到发布》](https://learnku.com/courses/creating-package)

License
-------

[](#license)

MIT

###  Health Score

39

—

LowBetter than 86% of packages

Maintenance47

Moderate activity, may be stable

Popularity24

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity61

Established project with proven stability

 Bus Factor1

Top contributor holds 92.3% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~48 days

Total

23

Last Release

731d ago

Major Versions

1.x-dev → 2.0.02022-02-10

2.0.0 → 3.0.02022-06-08

3.7.0 → 4.0.02024-05-10

### Community

Maintainers

![](https://www.gravatar.com/avatar/c507e57eab402e81335012357b7d7df6c5cafda3073adcc94b475037127d263f?d=identicon)[overtrue](/maintainers/overtrue)

---

Top Contributors

[![overtrue](https://avatars.githubusercontent.com/u/1472352?v=4)](https://github.com/overtrue "overtrue (48 commits)")[![mokeyjay](https://avatars.githubusercontent.com/u/6757507?v=4)](https://github.com/mokeyjay "mokeyjay (3 commits)")[![wjfz](https://avatars.githubusercontent.com/u/3372236?v=4)](https://github.com/wjfz "wjfz (1 commits)")

###  Code Quality

TestsPHPUnit

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/overtrue-laravel-qcs/health.svg)

```
[![Health](https://phpackages.com/badges/overtrue-laravel-qcs/health.svg)](https://phpackages.com/packages/overtrue-laravel-qcs)
```

###  Alternatives

[bagisto/bagisto

Bagisto Laravel E-Commerce

26.2k161.6k7](/packages/bagisto-bagisto)[unopim/unopim

UnoPim Laravel PIM

9.4k1.8k](/packages/unopim-unopim)[code16/sharp

Laravel Content Management Framework

78959.5k4](/packages/code16-sharp)[kompo/kompo

Laravel &amp; Vue.js FullStack Components for Rapid Application Development

11812.4k21](/packages/kompo-kompo)[eveseat/web

SeAT Web Interface

2723.2k135](/packages/eveseat-web)[overtrue/laravel-qcloud-federation-token

QCloud COS FederationToken generator for Laravel.

178.5k](/packages/overtrue-laravel-qcloud-federation-token)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
