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

加载推荐字体失败报错求助:指定本地TTF字体仍无法解决问题

解决Doctr中"无法加载推荐字体族"的警告问题

问题描述

出现如下警告:

WARNING:root:unable to load recommended font family. Loading default PIL font,font size issues may be expected.To prevent this, it is recommended to specify the value of 'font_family'.

已将TTF字体文件放在代码同一目录下,尝试使用默认字体仍触发相同警告。

关联代码片段

报错对应的核心代码:

import matplotlib.pyplot as plt
from PIL import Image, ImageDraw, ImageFont
from fontTools.ttLib import TTFont

font_path = 'DejaVuSans.ttf'
font = ImageFont.truetype(font_path, 40)

synthetic_pages = result.synthesize()
plt.imshow(synthetic_pages[0])
plt.axis('off')
plt.show()

完整代码:

from doctr.models import ocr_predictor
model = ocr_predictor(det_arch='db_resnet50', reco_arch='crnn_vgg16_bn', pretrained=True)

from doctr.io import DocumentFile
# 加载图片
doc = DocumentFile.from_images("Test.jpg")

# 分析文档
result = model(doc)

result.show()

import matplotlib.pyplot as plt
from PIL import Image, ImageDraw, ImageFont
from fontTools.ttLib import TTFont

font_path = 'DejaVuSans.ttf'
font = ImageFont.truetype(font_path, 40)

synthetic_pages = result.synthesize()
plt.imshow(synthetic_pages[0])
plt.axis('off')
plt.show()

解决方案

问题出在result.synthesize()方法:你手动加载的font对象并未被该方法使用,它内部默认尝试加载推荐字体失败,因此触发警告。只需在调用synthesize()时显式指定字体参数即可解决。

方法1:指定本地字体文件路径

直接将字体文件路径传入font_family参数:

font_path = 'DejaVuSans.ttf'
# 调用synthesize时传入字体路径
synthetic_pages = result.synthesize(font_family=font_path)
plt.imshow(synthetic_pages[0])
plt.axis('off')
plt.show()

方法2:使用系统已安装的字体

如果你的系统已安装目标字体,可直接传入字体名称:

# 例如系统已安装DejaVu Sans字体
synthetic_pages = result.synthesize(font_family='DejaVu Sans')

额外排查点

  • 确保字体文件路径正确,若不确定可使用绝对路径(如/home/user/DejaVuSans.ttf或C:\\fonts\\DejaVuSans.ttf)
  • 检查字体文件是否完整、未损坏,可尝试更换其他TTF字体测试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 05:42:17