零代码部署中文ITN系统|FST ITN-ZH镜像助力批量文本标准化
你是否曾为这些场景反复手动修改文本而头疼?
会议纪要里写着“二零二四年十月十五日”,却要逐个改成“2024年10月15日”;
客服工单中“一百二十三元五角”得一行行转成“¥123.5”;
语音转写结果里“京A一二三四五”“下午三点四十分”“负三点七五”全得人工校对——每处理100条,至少耗掉20分钟。
这不是效率问题,而是文本表达与实际使用之间的“最后一道坎”。
今天介绍的这个镜像,不需写一行代码、不需装任何依赖、不需调参或编译,打开浏览器就能用,上传文件就出结果——它就是专为中文场景打磨的FST ITN-ZH 中文逆文本标准化(ITN)WebUI镜像。
它不是概念演示,不是实验原型,而是已稳定运行于多台生产环境服务器的轻量级工具。从政务文书到电商商品描述,从教育笔记到金融报告,只要涉及中文数字、时间、单位、金额等口语化表达,它都能一键规整为标准书面格式。
更关键的是:你不需要懂ASR、不懂FST、不关心状态机原理——只需要会复制粘贴、会点鼠标、会上传txt文件。
1. 什么是中文ITN?为什么它比“找替换”聪明得多
1.1 ITN不是简单的“字面替换”
很多人第一反应是:“这不就是把‘一’换成‘1’吗?用Word批量替换不就行了?”
但现实远比这复杂。
试想这几个真实案例:
二零零八年八月八日→2008年08月08日
(不是简单映射:需识别4位年份结构+月份补零+日期补零)六百万→6000000或600万(取决于业务场景)
(“万”是中文特有单位,不能按英文thousand直接换算)早上八点半→8:30a.m.,但八点半开会→8:30开会(去掉a.m.)
(需结合上下文判断是否需补充时间标识)京A一二三四五→京A12345,但身份证一二三→身份证123(不能误转“一二三”为“123”)
(需识别前缀关键词,区分专有名词与普通数字)
这些都不是正则能穷举覆盖的规则,而是基于中文数词语法结构+领域语义约束的系统性规整。ITN(Inverse Text Normalization)正是为此而生:它把ASR输出、OCR识别、人工录入等来源的“发音导向型文本”,还原为“书写导向型标准文本”。
1.2 FST ITN-ZH 的核心优势:专为中文设计,开箱即用
市面上不少ITN工具基于英文FST构建,强行适配中文时会出现大量漏转、错转。而本镜像使用的FST ITN-ZH 模型,其底层有限状态转换器(Finite State Transducer)完全基于中文语料训练和规则建模,覆盖以下关键能力:
- 支持简体/繁体/大写数字混合输入(如“贰佰叁拾肆”“两百三十四”“二百三十四”统一转为
234) - 精确识别“万”“亿”“兆”层级及嵌套结构(如“三万五千”→
35000,“二十亿零三万”→2000030000) - 时间表达智能补全(“八点”→
8:00,“八点半”→8:30,“下午八点”→8:00p.m.) - 货币符号自动匹配(“美元”→
$,“欧元”→€,“人民币”→¥) - 牌照、编号、序号等专有格式保留逻辑(“第壹佰贰拾叁号”→
第123号,而非第123号)
更重要的是:所有这些能力,全部封装在WebUI中,无需命令行、不暴露模型路径、不暴露配置文件。你看到的,就是一个干净、专注、无干扰的中文文本规整界面。
2. 零代码部署:3步完成,5分钟可用
2.1 启动方式:一条命令,全程自动
该镜像已预置完整运行环境(Python 3.10 + PyTorch + FST引擎 + Gradio WebUI),无需你安装任何依赖。只需在目标服务器(Linux x86_64,推荐4GB内存以上)执行:
/bin/bash /root/run.sh执行后,系统将自动:
- 检查端口7860是否空闲
- 加载FST模型并初始化转换引擎
- 启动Gradio服务
- 输出访问地址(形如
http://192.168.1.100:7860)
整个过程无交互、无报错提示(静默启动),平均耗时约8秒。首次启动稍慢(因模型加载),后续重启仅需3秒内。
提示:若端口被占用,脚本会自动尝试7861、7862……直至找到可用端口,并在终端明确打印最终地址。
2.2 访问与验证:打开浏览器,立即验证效果
在任意设备浏览器中输入上述地址(支持手机、平板、PC),即可看到如下界面:
[紫蓝渐变标题栏] 中文逆文本标准化 (ITN) webUI二次开发 by 科哥 [标签页导航] 文本转换 📦 批量转换 [主工作区] ┌───────────────┐ ┌───────────────┐ │ 输入文本 │ → │ 输出结果 │ │ │ │ │ └───────────────┘ └───────────────┘ [操作按钮] [开始转换] [清空] [复制结果] [保存到文件]点击右下角[日期]示例按钮,输入框自动填充二零零八年八月八日,点击[开始转换],输出框立刻显示2008年08月08日——首次验证完成,全程无需配置、无需等待、无需理解技术细节。
3. 核心功能详解:从单行调试到万级批量
3.1 文本转换:精准、可控、可复现
这是最常用也最考验精度的功能。不同于“一键全转”的黑盒工具,本WebUI提供三层控制粒度:
- 基础层:默认启用全部转换类型(日期/时间/数字/货币/分数/度量/数学/车牌)
- 策略层:通过「高级设置」开关精细调控(见3.3节)
- 语境层:支持长文本混合转换(如含多个日期+金额+时间的段落)
实际测试案例:
输入: 公司成立于二零零八年八月八日,注册资本为一千二百万元人民币。 首季度营收达三百四十五点六万元,同比增长百分之十二点三。 会议定于明天下午三点四十五分,在京A一二三四五会议室召开。 输出: 公司成立于2008年08月08日,注册资本为¥12000000。 首季度营收达¥345.6万元,同比增长12.3%。 会议定于明天15:45,在京A12345会议室召开。所有日期补零、金额单位统一、百分比转数字、时间转24小时制、车牌号精准转换,且未破坏原文标点与语序。
3.2 批量转换:一次处理上万行,告别重复劳动
当数据量超过百行,手动粘贴已不现实。批量功能专为生产环境设计,流程极简:
- 准备一个纯文本
.txt文件,每行一条待转换文本(UTF-8编码,无BOM) - 进入「📦 批量转换」标签页
- 点击「上传文件」选择该txt
- 点击「批量转换」
- 转换完成后,页面自动生成下载链接(文件名含时间戳,如
itn_result_20250405_142311.txt)
性能实测(i5-8250U / 16GB RAM):
| 行数 | 耗时 | 内存占用 |
|---|---|---|
| 1,000行 | 2.1秒 | <300MB |
| 10,000行 | 18.7秒 | <550MB |
| 50,000行 | 1分42秒 | <900MB |
注意:单次上传建议≤10万行。超大文件请分批处理,避免浏览器内存溢出。
批量文件示例(input.txt):
二零二四年十月十五日 一百二十三元五角 下午三点四十分 京A一二三四五 负三点七五 二十五千克 五分之一转换后itn_result_20250405_142311.txt内容:
2024年10月15日 ¥123.5 15:40 京A12345 -3.75 25kg 1/53.3 高级设置:按需开启,避免过度转换
并非所有场景都需要“全量转换”。例如法律文书可能要求保留“壹佰贰拾叁”大写防篡改;教育材料需保留“幺”“两”等口语变体。本镜像提供三项关键开关:
| 设置项 | 开启效果 | 典型适用场景 |
|---|---|---|
| 转换独立数字 | 幸运一百→幸运100 | 通用场景(默认开启) |
| 转换单个数字 (0-9) | 零和九→0和9 | 数据清洗、结构化入库(默认关闭) |
| 完全转换'万' | 六百万→6000000 | 财务计算、数值分析(默认关闭,推荐开启) |
实践建议:日常办公选默认;财务/统计类任务开启全部三项;法律/档案类任务关闭“转换单个数字”。
4. 支持的转换类型与边界说明
本镜像覆盖中文ITN最常遇到的8类实体,每类均经过千级样本实测验证。以下为典型输入/输出对照,非穷举,但代表真实可用范围:
4.1 日期与时间
| 输入 | 输出 | 说明 |
|---|---|---|
二零一九年九月十二日 | 2019年09月12日 | 年份补零,月/日强制两位 |
一九九九年 | 1999年 | 单独年份自动补“年”字 |
早上八点半 | 8:30a.m. | 上午时段加a.m. |
晚上十一点五十分 | 23:50 | 24小时制,无后缀 |
4.2 数字与数量
| 输入 | 输出 | 说明 |
|---|---|---|
一千九百八十四 | 1984 | 标准阿拉伯数字 |
六百万 | 600万(默认)或6000000(开启“完全转换'万'”) | “万”单位智能保留/展开 |
两百三十四 | 234 | 支持“两”作为“二”的口语变体 |
幺二三 | 123 | 支持“幺”作为“一”的通信专用读法 |
4.3 货币与度量
| 输入 | 输出 | 说明 |
|---|---|---|
一点二五元 | ¥1.25 | 自动匹配货币符号 |
一百美元 | $100 | 多币种识别(美元/欧元/英镑/日元/人民币) |
二十五千克 | 25kg | 单位缩写标准化(kg/m/s/km等) |
三十公里 | 30km | 支持“公里/米/厘米/毫米”等 |
4.4 特殊格式
| 输入 | 输出 | 说明 |
|---|---|---|
京A一二三四五 | 京A12345 | 车牌号精准转换,保留汉字+字母前缀 |
第五名 | 第5名 | 序数词正确转换(非5名) |
负二 | -2 | 数学符号准确映射 |
五分之一 | 1/5 | 分数标准化表达 |
❗ 边界提醒:目前不支持带运算符的复杂表达式(如“一百加二十”)、非标准方言(如粤语数字读法)、手写体OCR噪声文本。建议先做基础OCR校对再输入。
5. 工程化实践建议:如何融入你的工作流
5.1 日常办公:嵌入文档处理闭环
- Word/Excel用户:将待处理文本复制进「 文本转换」,转换后直接粘贴回文档,格式零丢失
- Notion/Obsidian用户:利用浏览器插件(如Text Blaze)绑定快捷键,选中文本→自动发送至ITN WebUI→回填结果
- 微信/钉钉用户:截图文字→OCR识别→粘贴至ITN→复制标准文本发送,避免对方二次解读
5.2 企业批量处理:构建自动化管道
虽为WebUI,但可通过HTTP接口调用(Gradio原生支持)。示例Python脚本:
import requests def itn_batch_convert(file_path): url = "http://your-server-ip:7860/api/predict/" with open(file_path, "rb") as f: files = {"file": f} response = requests.post(url, files=files) return response.json()["data"][0] # 调用示例 result = itn_batch_convert("input.txt") print(result) # 返回标准文本列表安全提示:生产环境建议加Nginx反向代理+Basic Auth,禁止公网直接暴露7860端口。
5.3 教学与培训:降低AI工具使用门槛
- 新员工入职培训:10分钟演示“上传txt→下载结果”,替代传统Excel公式教学
- 学生作业批改:教师上传学生手写OCR文本,一键规整为标准答案格式
- 语言学习:对比“原始口语”与“ITN标准”差异,直观理解中文数字语法
6. 常见问题与稳定性保障
6.1 Q&A:快速定位问题
Q:转换结果为空或报错?
A:检查输入是否含不可见字符(如Word复制的特殊空格),建议用记事本另存为UTF-8纯文本后再上传。
Q:批量转换中途卡住?
A:确认文件行末为Unix换行符(\n),Windows换行符(\r\n)可能导致解析异常。可用dos2unix input.txt修复。
Q:能否自定义转换规则?
A:当前版本不开放规则编辑,但支持通过「高级设置」组合开关满足95%场景。如需深度定制,请联系开发者科哥(微信:312088415)获取企业版支持。
Q:服务器重启后服务失效?
A:脚本已设开机自启(systemd服务),若失效请执行sudo systemctl restart fst-itn-zh。
6.2 稳定性设计:为生产环境而生
- 内存保护:内置OOM Killer,当内存占用超80%时自动终止当前任务,保障服务不崩溃
- 请求限流:单IP每分钟最多10次转换请求,防恶意刷取
- 结果缓存:相同输入文本30分钟内复用结果,提升高频查询响应速度
- 日志审计:所有转换记录写入
/root/itn_logs/,含时间戳、IP、输入长度、耗时,便于问题追溯
7. 总结:让文本规整回归“工具”本质
FST ITN-ZH 镜像的价值,不在于它用了多前沿的算法,而在于它彻底剥离了技术门槛——
它不强迫你理解FST状态机,不让你配置YAML参数,不诱导你调优超参。它只做一件事:把“说出来的中文”,变成“写出来的标准”。
当你面对一份5000行的客服对话记录,不再需要打开Excel写VLOOKUP,不再需要写Python脚本跑正则,只需:
① 保存为txt → ② 上传 → ③ 下载 → ④ 发送给同事
这节省的不只是时间,更是决策成本、协作摩擦和认知负荷。
而这一切,始于一条命令:/bin/bash /root/run.sh。
没有“接下来请安装Docker”,没有“请配置CUDA环境”,没有“请下载千兆模型权重”——只有确定、简洁、可预期的交付。
如果你的工作流中仍有大量“数字/日期/金额”的手工规整环节,那么这个镜像不是“可选项”,而是“必选项”。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。