加载推荐字体失败报错求助:指定本地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
相关产品推荐
相关产品推荐

