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

如何获取TessBaseAPI读取时设置的字体名(C++及命令行)

获取TessBaseAPI使用的字体名方法

一、C++代码方式

你可以直接在现有识别流程中,通过Tesseract的ResultIterator提取识别结果对应的字体名:

  1. 在调用GetUTF8Text()之后添加以下代码:
// 创建结果迭代器,用于提取字体信息
tesseract::ResultIterator* resultIter = api->GetIterator();
if (resultIter != nullptr) {
    // 按单词级别遍历识别结果
    tesseract::PageIteratorLevel level = tesseract::RIL_WORD;
    do {
        // 获取当前单词对应的字体名
        const char* fontName = resultIter->GetUTF8Text(tesseract::RIL_FONT);
        if (fontName != nullptr) {
            cout << "识别到的字体名: " << fontName << endl;
            // 释放内存
            delete[] fontName;
        }
    } while (resultIter->Next(level));
    // 释放迭代器
    delete resultIter;
}
  1. 注意:这个方法是从图片的识别结果中提取实际文字对应的字体信息,能直接拿到你需要的训练用字体名,记得用完相关资源后释放内存,避免泄漏。

二、命令行方式

用Tesseract命令行工具直接解析图片,输出带字体信息的HOCR结果:

tesseract /home/user/Desktop/src.png stdout --psm 6 -c hocr_font_info=1
  • 参数说明:
    • --psm 6:指定图片为单一均匀文本块,可根据你的图片实际情况调整PSM模式(可选0-13)。
    • -c hocr_font_info=1:开启HOCR格式输出,并强制包含字体信息。
  • 查看输出结果,找到类似<span class='ocrx_word' title='bbox 0 0 100 20; font 0 0 0 0 0 "Arial"'>的内容,双引号内的字符串就是字体名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 19:49:53