Android Tess-Two OCR 无法映射的字符“fi”

Android Tess-Two OCR unmappable character 'fi'

我的 android 应用程序具有使用 tess-two 库的 OCR 功能。我在读取包含 "fi" 的字符串时遇到了这个问题。在baseApi.getUTF8Text()之后,一个获取OCR识别文本的方法,返回的String在那个"fi""fi" <<<- - - 非常注意那个string. 它不是一个2个字符的字符串,而是一个单字符的字符串。您可以通过复制和粘贴来重现它。现在,我认为这可能是 UTF8 编码或其他我没有足够知识的问题。当我尝试做 string.replace("fi","fi"), Android Studio builds with erors unmappable character for encoding utf-8。我尝试在 google 中搜索,但它会将其识别为常规 "fi" 而不是“fi”。

有什么方法可以修复这个角色吗?

这是我发现的,FWIW:字符“fi”是一个连字(更多信息请参见:Unicode Character 'LATIN SMALL LIGATURE FI' (U+FB01)

这里有一个快速但肮脏的程序,用于查找“fi”并将其替换为任何其他字符:

public class LigatureFI
{

    static char ligature_fi = 0xFB01;

    public static void main(String[] args)
    {
        String sligature_fi = Character.toString(ligature_fi);
        String string = new String("fififififififififififififififi");
        System.out.println(string);
        string = string.replaceAll(sligature_fi, "FI");
        System.out.println(string);
    }

}

如果您的 IDE 抱怨“fi”不在 cp1252 字符集中,请另存为 UTF8。

HTH.

您可以通过在调用 baseApi.setImage:

之前将其列入黑名单来避免识别 连字
baseApi.setVariable(TessBaseAPI.VAR_CHAR_BLACKLIST, "fi");

为了防止 Android Studio 在您的 java 代码上抛出 unmappable character 错误,请通过 choosing "UTF-8" 将您的文件编码转换为 UTF-8来自 Android Studio window.

右下角附近的选择器