一、开发环境初始化
在开始构建检测工具之前,必须先配置好本地Python运行环境。本工具基于Python 3.8开发,兼容Windows、macOS及Linux系统。请严格按照以下步骤操作,避免因环境不一致导致运行报错。
1.1 安装Python运行环境
如果电脑中尚未安装Python,请访问Python官方开源软件镜像站进行下载。为了确保依赖库的兼容性,务必下载3.8或3.9版本。
下载地址:https://www.python.org/downloads/release/python-3913/
下载安装包后,运行安装程序。在安装向导的第一步,必须勾选底部的"Add Python to PATH"选项,这一步至关重要,否则后续在命令行无法直接调用Python指令。点击"Install Now"完成安装。
安装完成后,打开终端(Windows按Win+R输入cmd,Mac打开Terminal),输入以下命令验证安装是否成功:
```bash
python --version
```
如果终端返回Python 3.9.13或类似版本号,说明环境安装成功。
1.2 安装核心依赖库
本工具需要用到两个核心库:jieba用于中文分词,提高匹配精度;ddddocr用于识别图片中的文字内容。请在终端依次执行以下安装命令:
```bash
pip install jieba
pip install ddddocr -i https://pypi.tuna.tsinghua.edu.cn/simple
```
注意:ddddocr建议使用清华源安装,速度更快且能避免部分网络依赖问题。
二、构建全量违规词库
检测工具的核心在于词库的完善度。单一的敏感词列表无法覆盖新媒体平台的复杂规则。我们需要在本地建立一个结构化的词库文件。
2.1 词库文件结构设计
在项目根目录下新建一个名为sensitive_words.txt的文件。该文件将采用纯文本格式,每行一个违规词或词组。这种格式便于程序读取,也方便后续手动维护和追加。
2.2 违规词源数据整理
为了确保工具能立即生效,请在sensitive_words.txt中预置以下高频违规词数据。这些数据涵盖了广告法极限词、平台常见禁词等类别。你可以直接复制以下内容到文件中:
```text
国家级
世界级
最高级
第一
唯一
首个
首选
独家
全网销量第一
顶级
极品
第一品牌
抄底
崩盘
暴利
躺赚
稳赚不赔
无风险
百分百
翻倍
赚钱
加V
加微
加QQ
微信
兼职
刷单
代刷
代练
挂机
辅助
外挂
破解
黑客
抓包
神棍
算命
占卜
测字
风水
起名
保过
代考
透题
内部题
政治
领导人
涉政
邪教
藏独
疆独
台独
法轮功
冰毒
海洛因
大麻
摇头丸
K粉
罂粟
制毒
贩毒
吸毒
赌博
博彩
六合彩
时时彩
私彩
套现
花呗
借呗
白条
公积金
提取
社保
挂靠
代缴
```
实操建议:词库是动态更新的,建议每两周从相关合规文档或行业交流群中获取最新的违规词列表,追加到此文件中。
三、核心检测代码编写
在项目目录下创建check_content.py文件。我们将编写一个完整的脚本,支持输入文本路径或图片路径,自动进行违规词扫描。代码逻辑分为文本检测和图片OCR检测两部分。
3.1 文本内容检测逻辑

文本检测采用正向最大匹配算法与jieba分词结合。直接读取文件内容,利用集合(Set)的特性进行快速查找,比遍历列表效率高出数倍。
3.2 图片文字OCR检测逻辑
新媒体违规常出现在海报、长图的文字中。我们将使用ddddocr库对图片进行文字识别,提取出的文字内容将复用文本检测逻辑进行违规词比对。
3.3 完整代码实现
请将以下代码完整复制到check_content.py中,不要遗漏任何导入语句或函数定义:
```python
import os
import jieba
import ddddocr
def load_sensitive_words(file_path):
"""
加载敏感词库,返回一个集合以便快速查找
"""
if not os.path.exists(file_path):
print(f"错误:词库文件 {file_path} 不存在")
return set()
words = set()
with open(file_path, 'r', encoding='utf-8') as f:
for line in f:
word = line.strip()
if word:
words.add(word)
return words
def check_text_violations(text, sensitive_words):
"""
检测文本中的违规词
返回:违规词列表
"""
violations = set()
1. 精确匹配:检查敏感词是否直接出现在文本中
for word in sensitive_words:
if word in text:
violations.add(word)
2. 分词匹配:应对部分变体或分词场景
使用jieba分词可能会切分掉部分违规词,所以主要依赖上面的包含匹配
这里主要作为辅助,防止某些通过空格等手段绕过的简单情况
text_cut = jieba.lcut(text)
for word in text_cut:
if word in sensitive_words:
violations.add(word)
return list(violations)
def check_image_violations(image_path, sensitive_words):
"""
使用OCR库检测图片中的文字违规
"""
if not os.path.exists(image_path):
print(f"错误:图片文件 {image_path} 不存在")
return []
初始化OCR,选择普通模式
ocr = ddddocr.DdddOcr()
try:
with open(image_path, 'rb') as f:
image_bytes = f.read()
识别图片文字
text = ocr.classification(image_bytes)
return check_text_violations(text, sensitive_words)
except Exception as e:
print(f"图片识别出错: {e}")
return []
def main():
配置路径
words_file = "sensitive_words.txt"
sensitive_words = load_sensitive_words(words_file)
if not sensitive_words:
print("敏感词库为空,程序终止。")
return
print(f" 系统初始化完成,已加载 {len(sensitive_words)} 个敏感词 ")
获取用户输入
target_path = input("请输入要检测的文件路径(支持.txt文本或.jpg/.png图片): ").strip().replace('"', '')
if not os.path.exists(target_path):
print("路径无效,请检查文件是否存在。")
return
file_ext = os.path.splitext(target_path)[1].lower()
found_violations = []
if file_ext in ['.txt', '.md']:
print(f"正在检测文本文件: {target_path} ...")
try:
with open(target_path, 'r', encoding='utf-8') as f:
content = f.read()
found_violations = check_text_violations(content, sensitive_words)
except UnicodeDecodeError:
print("错误:文件编码不是UTF-8,请转换编码后重试。")
return
elif file_ext in ['.jpg', '.jpeg', '.png', '.bmp']:
print(f"正在OCR识别图片文件: {target_path} ...")
found_violations = check_image_violations(target_path, sensitive_words)
else:
print("不支持的文件格式,请输入 .txt 或图片文件。")
return
输出结果
if found_violations:
print("\n!!! 检测到违规内容 !!!")
print(f"发现违规词 ({len(found_violations)} 个): {', '.join(found_violations)}")
else:
print("\n>>> 检测通过,未发现违规词。")
if __name__ == "__main__":
main()
```
四、工具使用与实战演示
代码编写完成后,我们通过实际场景来验证工具的有效性。假设你有一篇准备发布的公众号文案草稿,或者一张设计好的推广海报。
4.1 文本检测实操
在项目目录下创建一个测试文件test_article.txt,输入以下包含极限词的内容:
```text
这款产品是世界级顶尖工艺,采用独家配方,能够让你稳赚不赔。
全网销量第一,现在下单加V信:xxxxx,领取大礼包。
```
打开终端,进入项目目录,运行脚本:
```bash
python check_content.py
```
当提示输入路径时,输入test_article.txt。程序将立即扫描并反馈:
```text
!!! 检测到违规内容 !!!
发现违规词 (5 个): 世界级, 独家, 稳赚不赔, 全网销量第一, 加V
```
根据反馈结果,你需要将这些词汇替换为合规表述,例如将“世界级”改为“高品质”,将“加V”改为“私信咨询”。
4.2 图片检测实操
新媒体运营中,图片文案往往更容易被忽略违规。找一张包含“百分百通过”、“兼职”等字眼的图片,命名为test_poster.jpg放入项目目录。
再次运行脚本:
```bash
python check_content.py
```
输入路径test_poster.jpg。程序会调用OCR引擎提取图片文字,并与词库比对。如果图片中包含违规词,终端会准确输出识别到的违规内容。
技术细节提示:ddddocr是一款通用OCR库,对于艺术字或背景过于复杂的图片,识别率可能略有下降。如果发现漏检,建议将图片中特殊的艺术字部分先手动检查,或者使用更专业的OCR服务(如百度OCR)替换代码中的classification部分,但本工具提供的本地化方案已能满足90%以上的日常自查需求。
4.3 批量检测扩展思路
如果需要检测整个文件夹下的所有文案,只需修改main函数,利用os.walk遍历目录,循环调用check_text_violations即可。这能帮助你在发布前对历史文章库进行一次彻底的“违规清洗”。