ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

text-humanizer 翻译引擎实现解读:Google Translate 长文本分块与 Niutrans 双引擎实战

text-humanizer 翻译引擎实现解读:Google Translate 长文本分块与 Niutrans 双引擎实战

【免费下载链接】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

项目地址:https://gitcode.com/gh_mirrors/texthu/text-humanizer
点击查看免费下载

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):

  1. LLM 重写:用 DeepSeek 改写文本,并翻译为中文作为中间表示;
  2. Google 翻译:通过 Google Translate 转译为土耳其语,引入句法变化;
  3. DeepL 翻译(可选):转译为日语,引入第二个独立翻译引擎;
  4. 最终重构:再用 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目标语言代码
apikeyNiutrans 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_keyDeepSeek API 密钥
deepl_api_keyDeepL API 密钥(可选,启用第三步翻译)
temperatureLLM 温度,推荐 1.3

小结

text-humanizer 的翻译引擎设计给新手留下了三点可借鉴的思路:

  1. 分块要尊重语义边界——按句子而非固定长度切分,且阈值留出安全余量;
  2. 双引擎互为冗余——免费渠道保可用,商业渠道保质量,异常处理要覆盖「错误字段」与「未知响应」;
  3. 策略从灵活走向收敛——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

项目地址:https://gitcode.com/gh_mirrors/texthu/text-humanizer
点击查看免费下载
上一篇:Metallb多租户网络策略案例:金融行业隔离
下一篇:sebastian/diff 6.x到7.x迁移指南:兼容性处理技巧

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进