当前位置:网站首页 >  教程

零门槛构建新媒体违规词自动检测工具实操指南

时间:2026年06月10日 06:49:48 来源:易频IT社区

一、开发环境初始化

在开始构建检测工具之前,必须先配置好本地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即可。这能帮助你在发布前对历史文章库进行一次彻底的“违规清洗”。

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图