INNER CODE UNIT · Python
est_tokens
Laurent00TT/PharosRAG · src/chunker/core.py:39
def est_tokens(text, lang):
# HEURISTIC char/divisor. 实测验证(2026-06,Qwen3-VL 真 tokenizer,2927 真实 chunk):英文散文
# academic/law char/token≈3.85(≈现值 4.0,误差<4%);偏差几乎全来自数字/表格密集文档(财报 5.08/
# 政府 5.35/中文研报 1.51),是 char-based 启发式的固有局限,单值无法兼顾"散文 vs 数字密集"两簇——
# 改成均值(en 4.34)反害散文主体。两个误差方向都被兜住:高估 token→块偏小→small-to-big 补(不丢
# 数据);低估→块偏大但远未及 Qwen3-VL 32k 上限。故保持现值不重标。
# 'zh' 别名见 seal review:CJK 落 en 除数会 2.35x 低估 -> 截断风险。
return len(text or "") / (1.7 if (lang or "").lower().startswith(("ch", "zh")) else 4.0)
def _norm(text):
return re.sub(r"\s+", " ", (text or "").strip())
def _safe_rel(p):
"""SECURITY (seal review): an image_path must be a SAFE RELATIVE ref under the MinerU output root —
reject absolute / UNC / drive paths, URL schemes (://), and '..' traversal, so a poisoned parse can't
make the embed stage read an arbitrary file or SSRF off it. Returns the cleaned rel path, or None."""