直接回答
泰文文本审查不只是看截图里字形是否能显示。产品可能需要词语选择、行换行、搜索和编辑;这些操作并不使用完全相同的边界规则。Android ICU BreakIterator 暴露不同的词语、行、句子和字符迭代器;词语迭代与行迭代各有用途。Unicode UAX #29 描述文本边界,UAX #14 描述换行。这些标准和 API 提供测试方法,但不能证明某个应用选用的组件对所有泰文样例都符合用户预期。ARCH-01 与 BENCHMARK-01 支持固定流程的验证,却不认证 Cove 的泰文翻译。 测试记录应把四层分开:原始泰文串、UI 的词界与行界、预处理或规范化,以及可观察时的模型内部 tokenization。双击选择所需的词语边界,不一定等于合法换行点;两者也都不等同于模型 token。不要为了便于计数就在原文中插入空格,因为这会改变样例,并可能改变搜索、光标移动和模型输入。 准备由流利读者审核的自然书写样例,覆盖词间无空格、分句空格、泰文附标、拉丁名称、数字、标点、必要时 emoji,以及在不同宽度下换行的长文本。审核者应按每个 UI 场景标注预期选区和可接受的换行位置。再加入可逐字符核对的源句,检测意外规范化。记录编码和显示条件,同时不要把用户私人文字放入日志或截图。 分别测试选词、选句、移动光标、复制片段、精确搜索和段落布局。使用合适的平台迭代器或待测组件,记录传入的 API 与 locale,并将返回偏移与原字符串比较。随后验证用户编辑和撤销。如果显示翻译结果,应检查源文本保留及输出排版,但不能把流畅外观当成翻译正确。 明确版本化预处理。若规范化空格、标点或组合附标,记录确切变换并保留原文。比较 UI 显示、选区偏移、剪贴板内容及交给模型的任何请求。缺陷可能只出现在 UTF-16 code unit、Unicode code point 和用户感知字符之间换算偏移时。应加入一个可见字符由多个码点构成的样例,检查选区不会把附标从基础字符上切开。 测试回退与恢复。区域边界迭代器不可用、文本格式错误、输入为空或超长时,不应崩溃,也不应静默改写短句。如果分词库使用回退 locale 或规则版本,应记录在报告中。保留用户调整边界或扩大选区的路径。除非用户明确确认修改后的输入,否则不能假设修正 UI 分段就应改写发给模型的文字。 报告应记录 Android/API 版本、库与 locale 版本、样例版本、显示宽度、字体和控件、边界类型、选择操作、返回偏移及失败。保留截图、源串和预期标注。范围仅限文字交互与行布局,不能据此宣称泰文模型支持、离线可用或翻译质量。如果产品尚无经验证的泰文任务路径,就应将模型能力保持未知,同时可以修复 UI 边界行为。
泰文读者选词复核翻译草稿
读者在离线翻译界面看到一条较长的泰文句子,双击某个词后编辑源片段并重试。窄屏上文本会换行,其中还包含拉丁字母模型标识,因此选词、断行和原始字符保留都需要验证。
决策
使用审核过的固定样例和固定 UI 宽度,分别测试词语、行、光标、复制与模型输入边界。
预期结果
报告说明文本交互是否保留原有字符序列,不声称支持泰文翻译。
需要收集的证据
只有将以下证据与同一模型文件和测试运行关联起来,结论才可复核:
- ARCH-01:端侧/云端边界属于架构定义
- BENCHMARK-01:能力结论需固定产物与原始评测
任务质量需要有版本记录的语料和验收规则;流畅的单条样例不等于准确度结果。
实施流程
- 冻结已审核的泰文样例. 准备自然空格、附标、标点、拉丁片段、数字和长行样例,由流利读者标注预期选区偏移。
- 选择并记录各类边界规则. 记录 UI 使用词、行、句或字符迭代器,并注明 Android 版本、库、locale 与文本控件。
- 测试选区、换行和光标移动. 在多个固定宽度下比较可见换行与标注,测试双击、拖动选区柄、复制、搜索和编辑,并记录来源。
- 将偏移与源字符核对. 比较返回偏移和不可变源串,确认组合附标、标点和多码元字符没有被切开或错位,避免切断附标。
- 验证规范化及恢复路径. 检查模型交接前的变换,覆盖空值和格式错误输入,并确认用户能修正选区而不静默改写原文。
让每个阶段的状态都可观察。失败信息应指出阶段、模型、运行时和恢复动作,同时避免记录用户私密内容。
验收标准
- 词语选择、行断点、句子选择和模型 tokenization 必须分别记录,不能混用。
- 选区偏移与复制文本保留审核过的源序列,包括附标、标点和混合文字。
- 没有独立产物评测时,报告不声称支持泰文、可离线运行或达到某种翻译准确率。
决策对照表
| 维度 | 选择或证据 | 解读方式 |
|---|---|---|
| 词语边界 | 用于选词或整词搜索的迭代器 | 定义候选词片段,不决定换行或模型 token。 |
| 行断点 | 用于显示排版的断行规则 | 决定合法换行位置,可能不同于选词边界。 |
| 模型 tokenizer | 仅在运行时可观察时记录 | 内部模型单位不是 UI 词语,不能替代用户可见分段。 |
需要避免的失败模式
- 为统计方便而给原文任意插入空格
- 把词选择边界当成行断点
- 将模型 token 称为用户可见词语
还要避免静默回退、版本未固定、缺少取消处理,以及把不同配置的结果混在一起下结论。失败运行也应与成功记录一并保存。
最小复现记录
| 层级 | 记录内容 |
|---|---|
| 设备 | 厂商、型号、芯片、内存档位、操作系统版本 |
| 软件 | 应用版本和 Git 提交号 |
| 模型 | 系列、变体、版本、格式、文件长度、摘要、量化方式 |
| 运行时 | 名称、版本、请求后端及实际后端证据 |
| 工作负载 | 样例版本、输入摘要、提示词摘要、输出策略 |
| 结果 | 完成、失败、取消、回退及保护隐私的诊断信息 |
发布检查表
- ☐ 主要搜索问题已回答,且没有未经支持的数字。
- ☐ 所有模型文件和运行时版本均已固定。
- ☐ 代表性任务和失败处理策略均有说明。
- ☐ 生命周期、取消、清理和回退均已测试。
- ☐ 用户内容与网络边界均有说明。
- ☐ 结论只适用于被记录的配置。
- ☐ 新增测试结果时链接到原始方法或证据。
来源与相关证据
中文部署与排错专题见。奇连 AI 端侧专题。
常见问题
泰文词界和换行位置相同吗?
不相同。Android ICU 提供不同词语与行迭代器,Unicode 也定义不同边界程序;应按具体 UI 操作、locale、控件和组件版本分别测试,并记录偏移与页面状态。
测试样例是否应该在每个泰文词语间插入空格?
不应默认这样做。添加空格会改变源样例。应保留自然文本,并由流利读者标注选区、断行和字符序列,方便以后复现与同行审核。
泰文分段测试通过就能证明模型会翻译泰文吗?
不能。此测试覆盖文字交互和布局。模型支持、离线准备度与翻译质量需按确切产物、方向、语料及原始结果另行评估,不能由 UI 推断。