【免费下载链接】text-humanizer
text-humanizer is an open-source project designed to convert text generated by AI to its "humanized" version. Bypasses the most of AI detectors such as Turnitin or GPTZero
text-humanizer 是一个完全免费的开源工具,用于把 AI 生成的文本改写成更接近人类表达的自然文本,从而绕过 Turnitin、GPTZero 等主流 AI 检测器。它的核心思路是「多语言翻译 + LLM 改写」:通过 Google Translate 长文本分块翻译和 Niutrans 双引擎协作,对文本做跨语言扰动后再还原,让检测器难以识别 AI 痕迹。本文带你读懂这条翻译链路的实现细节。
项目定位:把 AI 文本「洗」成人味
text-humanizer 支持 8 种语言(en、ja、zh、ko、de、fr、es 等),在保持语义不变的前提下重构句式与措辞。完整工作流分为四步(详见 README-zh.md):
- LLM 重写:用 DeepSeek 改写文本,并翻译为中文作为中间表示;
- Google 翻译:通过 Google Translate 转译为土耳其语,引入句法变化;
- DeepL 翻译(可选):转译为日语,引入第二个独立翻译引擎;
- 最终重构:再用 DeepSeek 翻译回原文语言,消除翻译痕迹、恢复可读性。
💡 翻译环节正是「去 AI 味」的关键:每一次跨语言转换都会打乱原文的句式模式。
翻译链路总览:从入口到双引擎
生产环境推荐使用Standard Pipeline(v1.5),它是经过端到端验证的固定四步链路,统一封装在 src/standard/__init__.py 中:
from src.standard.pipeline import run_standard_pipeline config = toml.load("config/config.toml") result = run_standard_pipeline("Your text here", config, target_lang="en")链路中的两个翻译能力都集中在 translators.py:google_translate负责免费但有限额的 Google 渠道,niutrans_translate负责带 API Key 的 Niutrans 商业渠道。两者搭配,兼顾稳定性与语言多样性。
Google Translate 长文本分块原理
Google Translate 的免费接口单次约有5000 字符上限,直接投递长文本会失败。项目中的解决方案是「按句子边界分块」,实现见 translators.py:
- 文本长度超过4500 字符时,先切块再逐块翻译,最后用空格拼接;
- 切块逻辑封装在
_split_text函数(translators.py):先用正则(?<=[.!?。!?])\s+在句末标点处拆分句子,再把句子逐个累加到当前块中,一旦块长度超过 4500 就收块; - 这样每块都尽量保持完整句子,避免把一句话拦腰截断影响翻译质量。
⚠️ 注意细节:阈值取 4500 而非 5000,是留出了标点、空白等边界情况的余量,属于典型的「安全水位」设计。
Niutrans 第二引擎:API 调用要点
niutrans_translate(translators.py)用httpx以 POST 方式调用 Niutrans 开放接口,请求体包含四个字段:
| 字段 | 含义 |
|---|---|
from | 源语言代码 |
to | 目标语言代码 |
apikey | Niutrans API 密钥 |
src_text | 待翻译文本 |
响应处理上区分了三种情况:正常返回取tgt_text;出现error_msg时抛出Niutrans error: ...运行时异常;其余情况视为异常响应并报错。整体超时设置为 60 秒,给长文本留出充足的网络窗口。
为什么需要双引擎?一是互为备份:Google 免费接口偶发限流时,Niutrans 可以顶上;二是引入独立的翻译风格,让同一文本经历两套翻译引擎后,句式扰动更彻底。
混合引擎评分:v1.0 的探索实现
除了标准流水线,mixed_engine.py 中还保留了 v1.0 的参考实现MixedEngineProcessor,展示了一种更激进的思路——逐句多引擎赛马:
_segment(mixed_engine.py)按句末标点把文本拆成句子;- 每句话轮流交给
google、mymemory等引擎做「英→中→英」往返翻译; _score_naturalness(mixed_engine.py)用「词汇唯一率 × 0.6 + 词长方差」打分,取得分最高的引擎结果。
这种best_score策略虽然灵活,但每句都要多次调用接口,耗时和配额消耗较大,因此 v1.5 生产链路改成了 Google + Niutrans 的固定序列,在效果与成本之间取得了平衡。
快速上手:一键安装与配置步骤
项目支持 Windows / Linux / macOS,依赖见 requirements.txt:
git clone https://gitcode.com/gh_mirrors/texthu/text-humanizer cd text-humanizer pip install -r requirements.txt python main.py配置文件参考 config.example.toml,核心选项如下:
| 选项 | 说明 |
|---|---|
target_language | 输入/输出目标语言(en、ja、zh、ko、de、fr、es) |
deepseek_api_key | DeepSeek API 密钥 |
deepl_api_key | DeepL API 密钥(可选,启用第三步翻译) |
temperature | LLM 温度,推荐 1.3 |
小结
text-humanizer 的翻译引擎设计给新手留下了三点可借鉴的思路:
- 分块要尊重语义边界——按句子而非固定长度切分,且阈值留出安全余量;
- 双引擎互为冗余——免费渠道保可用,商业渠道保质量,异常处理要覆盖「错误字段」与「未知响应」;
- 策略从灵活走向收敛——v1.0 逐句赛马适合实验,生产环境用固定验证过的链路更可靠。
理解这套「LLM 重写 + 多引擎翻译」的流水线后,你也能把它应用到自己的文本改写场景中。
【免费下载链接】text-humanizer
text-humanizer is an open-source project designed to convert text generated by AI to its "humanized" version. Bypasses the most of AI detectors such as Turnitin or GPTZero
相关推荐
text-humanizer 代码实现原理:LLM 重写器与 Google/Niutrans 翻译引擎是如何协同工作的
text humanizer 代码实现原理:LLM 重写器与 Google/Niutrans 翻译引擎是如何协同工作的 text humanizer 是一个免费
text-humanizer 混合引擎 mixed_engine 详解:如何用双向翻译打分选出最自然文本的完整指南
text humanizer 混合引擎 mixed_engine 详解:如何用双向翻译打分选出最自然文本的完整指南 text humanizer 是一款完全免费
LunaTranslator的翻译引擎:40+引擎全面解析与实战指南
LunaTranslator的翻译引擎:40+引擎全面解析与实战指南 引言:为什么需要如此丰富的翻译引擎? 在Galgame翻译领域,单一翻译引擎往往难以满足复
桌面应用
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考