OCRmyPDF 警告已安装字体没有所需字符的字形时如何找到并安装对应的 Noto 字体【免费下载链接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF运行 OCRmyPDF 对扫描件做 OCR 时日志里可能出现这样的警告某个词没有已安装字体能覆盖它的字形glyphs被回退到无字形的占位字体渲染。安装文档说明出现该警告时消息会点名具体哪些字符无法渲染例如文档示例Ꮳ U13E3 CHEROKEE LETTER TSA并据此安装对应书写系统的 Noto 字体即可恢复完整渲染。本文给出从读警告、定位缺失字体到按平台安装 Noto 字体并验证的完整路径。需要说明的适用条件v17.9.0 起警告才会带上字符码位与 Unicode 名称且 OCRmyPDF 会使用系统上任意已安装的 Noto 字体不只是它按名字知道的那批字族——见 v17 版本说明。更早的 v17 版本只报 No font found 且不带字符信息无法照本文的读法操作。v17.7.1 起字体发现支持NotoSansArabic[wdth,wght].ttf这类可变字体文件Homebrew cask 和 Google Fonts 当前版本的分发形式之前只有静态-Regular.ttf/.otf会被匹配导致已装对字体仍报无字形。警告的实际影响文字层仍在只是高亮时看不见理解影响范围有助于判断要不要处理。文档说明安装文档、字体管理器实现一致表明未覆盖字形的文本仍然作为不可见文字层写入 PDF搜索和复制功能不受影响受影响的只是在 PDF 查看器中高亮该文本时的显示——会显示为空白警告只针对非 ASCII 文本同一行语言只警告一次。也就是说这不是致命错误PDF 输出本身是完整的。只有当你需要文本层在查看器中可见、可选择显示时才需要按下面步骤补装字体。从警告中读出缺的是哪个书写系统v17.9.0 之后的警告格式实现见 src/ocrmypdf/font/multi_font_manager.py分两种情况某个词整体无字形覆盖消息形如No installed font has glyphs for the detected 语言 text (缺失字符)或No installed font has glyphs for some of the detected text (缺失字符) 其中缺失字符按Ꮳ U13E3 CHEROKEE LETTER TSA这种“字符 码位 Unicode 名称”形式逐个列出此为文档示例。Unicode 名称直接告诉你字符属于哪个书写系统上例是 Cherokee 切罗基文据此选 Noto 字体。 当 OCRmyPDF 识别出行语言且该语言有映射字体族时警告还会直接给出要安装的字体族名如NotoSansCherokee。跨文字混合且没有任何单一字体能完整覆盖消息为Text mixing scripts that no single installed font covers。注意这种情况安装更多字体没有用——OCRmyPDF 按词使用单一字体属于已知边界见文末“装更多字体也无用的情况”。按平台安装对应的 Noto 字体安装文档与 打包者文档给出的官方包名如下。OCRmyPDF 只内置一个拉丁字体随包附带的 Occulta 类占位字体之外src/ocrmypdf/data/NotoSans-Regular.ttf覆盖拉丁其余字体从系统已安装字体中发现所以必须用操作系统包管理器安装。Debian / Ubuntu综合包一次覆盖全部脚本apt install fonts-noto文档的针对性示例是只补单个脚本时安装对应家族包例如缺切罗基文时apt install fonts-noto-core具体包名以你发行版的包索引为准apt search fonts-noto可列出所有可用的fonts-noto-*家族包。Fedoradnf install google-noto-fonts-all注意 v17 版本说明中特别纠正过Fedora 的包名是google-noto-fonts-all之前文档中的旧包名已失效。macOSHomebrewHomebrew没有单一 Noto 包每个家族是独立的 cask——v17.9.0 之前文档曾推荐不存在的font-noto包已修正。做法brew install --cask font-noto-sans font-noto-serif这是最低配置再按你 OCR 的每个额外脚本装对应 cask例如阿拉伯文与 CJKbrew install --cask font-noto-sans-arabic font-noto-sans-cjk不确定目标脚本的 cask 名时用文档给出的命令列出全部brew search font-notomacOS 自带约一百个按脚本划分的 Noto 字体这正是 v17.9.0 改为“搜索任意已安装 Noto 字体”的背景此前切罗基文、Vai 文这类系统已带字体的情况仍会回退到无字形字体。CJK 的额外注意v17.7.1 起字体发现对 CJK 是语言感知的中、日、韩每种语言映射到自己的按语言划分的 Noto 字体族NotoSansSC、TC、HK、JP、KR泛 CJK 超集字体只作共享回退。原因是各语言的字体是地区子集可能缺少其他脚本的字形。所以 CJK 文档报缺字形时优先确认装的是对应语言的字体族而不是只看有没有“某个 CJK 字体”。重新运行并验证安装字体后用相同输入重新跑一次 OCRmyPDF例如ocrmypdf input.pdf output.pdf判断依据按文档给出的现象核对日志中不再出现针对这些字符的No installed font has glyphs警告在 PDF 查看器中高亮之前显示空白的那段文本现在能正常显示字形——这是文档明确指出的受影响行为“appears blank when highlighted in a PDF viewer”也是修复后可观察到的差异提醒一点搜索与复制功能在装字体前后都可用所以“能搜到字”不能作为字体已正确安装的验证标准要看高亮显示。装更多字体也无用的情况如果日志出现的是Text mixing scripts that no single installed font covers (...)这条警告不要再去装字体。文档说明这种情况是每个字符都各有字体可渲染但没有任何单一字体覆盖整词而 OCRmyPDF 按词只用一个字体因此“Installing more fonts will not help”。文本层依旧可搜索、可复制仅高亮显示为空白属于当前实现的限制。相关文档字体依赖与各平台包名docs/installation.mdv17.9.0 / v17.7.1 字体相关变更docs/releasenotes/version17.md警告文案与缺失字符检测逻辑src/ocrmypdf/font/multi_font_manager.py【免费下载链接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考