You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python解析含KrutiDev字体印地语的Word文件并正确转JSON

解决KrutiDev 010字体印地语文本转Unicode并保存为JSON的问题

问题本质

KrutiDev 010是非Unicode的编码型字体——它并非用标准Unicode存储印地语,而是将普通ASCII字符映射为印地语字形。你从docx中提取的"乱码"其实是KrutiDev编码对应的ASCII字符,必须先转换为标准Unicode印地语,才能正常保存为JSON。

解决方案步骤

1. 提取docx中的KrutiDev编码文本

用python-docx库提取文档文本,得到的就是需要转换的ASCII字符序列:

from docx import Document

# 读取目标docx文件
doc = Document("your_file.docx")
# 提取所有段落的文本内容
krutidev_raw_text = "\n".join([para.text for para in doc.paragraphs])

2. 将KrutiDev编码转换为Unicode印地语

使用专门的转换库krutidev-to-unicode处理字符映射:
先安装依赖库:

pip install krutidev-to-unicode

然后执行转换:

from krutidev_to_unicode import Converter

converter = Converter()
unicode_hindi_text = converter.convert(krutidev_raw_text)

如果需要自定义特殊字符的映射(比如库未覆盖的生僻符号),可以自行维护映射字典替换:

# 示例映射片段,完整映射表可自行查找补充
krutidev_unicode_map = {
    'q': 'क', 'Q': 'क़', 'w': 'ख', 'W': 'ख़',
    'e': 'ग', 'E': 'ग़', 'r': 'घ', 'R': 'घ़'
}
unicode_hindi_text = ''.join([krutidev_unicode_map.get(c, c) for c in krutidev_raw_text])

3. 保存为JSON文件

确保启用ensure_ascii=False并指定UTF-8编码,避免Unicode字符被转义:

import json

with open("hindi_output.json", "w", encoding="utf-8") as f:
    json.dump({"hindi_content": unicode_hindi_text}, f, ensure_ascii=False, indent=4)

注意事项

  • 确认docx中的文本是KrutiDev编码存储的(而非内嵌字体的图片式文本),如果是图片形式,需要先通过OCR识别出KrutiDev编码的字符再转换。
  • 部分转换库对生僻字符支持有限,可通过补充自定义映射表完善转换逻辑。

内容的提问来源于stack exchange,提问作者Akshat 08

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 02:48:12