Copy Highlighter-hljs
| from fontTools.ttLib import TTFont |
| import ddddocr |
| from io import BytesIO |
| from PIL import Image, ImageDraw, ImageFont |
| |
| |
| def convert_cmap_to_image(cmap_code, font_path): |
| img_size = 1024 |
| img = Image.new("1", (img_size, img_size), 255) |
| draw = ImageDraw.Draw(img) |
| font = ImageFont.truetype(font_path, img_size) |
| character = chr(cmap_code) |
| bbox = draw.textbbox((0, 0), character, font=font) |
| width = bbox[2] - bbox[0] |
| height = bbox[3] - bbox[1] |
| draw.text(((img_size - width) // 2, (img_size - height) // 2), character, font=font) |
| return img |
| |
| |
| def extract_text_from_font(font_path): |
| font = TTFont(font_path) |
| |
| ocr = ddddocr.DdddOcr(beta=True, show_ad=False) |
| font_map = {} |
| for cmap_code, glyph in font['cmap'].getBestCmap().items(): |
| image = convert_cmap_to_image(cmap_code, font_path) |
| bytes_io = BytesIO() |
| image.save(bytes_io, format='PNG') |
| |
| text = ocr.classification(bytes_io.getvalue()) |
| |
| |
| |
| |
| font_map[glyph.replace("uni", "&#x").lower()] = text |
| return font_map |
| |
| |
| |
| |
| |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现