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

Tesseract.js如何识别英阿双语证件或忽略指定语言识别?

Tesseract.js多语言识别问题解决方案

问题场景

使用Tesseract.js处理同时包含英文、阿拉伯文的证件图像时,仅加载英文模型会导致阿拉伯文内容识别结果错乱,破坏最终输出。原有仅加载英文模型的代码如下:

const convertImageToText = useCallback(async () => {
    if (!selectedImage) return;
    await worker.load(); // 加载tesseract.js工作线程
    await worker.loadLanguage("eng"); // 加载英文语言包
    await worker.initialize("eng"); // 初始化英文识别配置
    const { data } = await worker.recognize(selectedImage);
    setTextResult(data.text);
}

可选处理方案

根据实际需求选择对应方案即可:

  • 方案一:同时识别英文+阿拉伯文
    Tesseract.js原生支持多语言同时识别,只需要在加载、初始化语言包时,传入用+拼接的多语言代码即可,阿拉伯文对应的语言代码为ara。
    修改后代码:
const convertImageToText = useCallback(async () => {
    if (!selectedImage) return;
    await worker.load();
    // 同时加载英文、阿拉伯文语言包
    await worker.loadLanguage("eng+ara");
    // 用双语言配置初始化识别器
    await worker.initialize("eng+ara");
    const { data } = await worker.recognize(selectedImage);
    setTextResult(data.text);
}

提示:双语言模式会增加首次运行的语言包下载体积,识别耗时也会略高于单语言模式。

  • 方案二:忽略阿拉伯文,仅保留英文识别结果
    如果不需要提取阿拉伯文内容,可以通过设置识别字符白名单的方式,强制识别器只匹配英文字符、数字和常用英文标点,彻底避免阿拉伯文产生的乱码:
const convertImageToText = useCallback(async () => {
    if (!selectedImage) return;
    await worker.load();
    await worker.loadLanguage("eng");
    await worker.initialize("eng");
    // 配置字符白名单,仅允许识别指定范围内的英文字符
    await worker.setParameters({
        tessedit_char_whitelist: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 .,-:;()/\'"'
    });
    const { data } = await worker.recognize(selectedImage);
    setTextResult(data.text);
}

如果证件上英文、阿拉伯文的区域边界清晰,也可以提前通过图像裁剪去掉阿拉伯文所在区域后再做识别,能进一步提升英文识别的准确率。


内容的提问来源于stack exchange,提问作者חזי ראובני

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 19:15:47