Kindle 网页版的字体加密是怎么回事?我用 OCR 绕过了它 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
vinxu
V2EX    程序员

Kindle 网页版的字体加密是怎么回事?我用 OCR 绕过了它

  •  
  •   vinxu 1 小时 57 分钟前 190 次点击

    最近在做一个浏览器 TTS 扩展( CastReader ),碰到一个有意思的技术问题。 Kindle Cloud Reader ( read.amazon.com )用了一套自定义加密字体做 DRM 。打开任意一本书,右键检查元素,DOM 里的字符全是乱的"chapter" 在源码里可能显示为 "∑≈"。浏览器能正常渲染是因为加载了亚马逊的自定义字体文件做映射,但 DOM 里的 textContent 是废的。 这导致所有 TTS 扩展在 Kindle 上全军覆没。Read Aloud 、NaturalReader 、Speechify ,全部读出来是乱码。我测了 15 个扩展,没有一个能用。 我的解决方案:不读 DOM ,读像素。用 tesseract-wasm 在浏览器里跑 OCR ,直接识别渲染后的页面图像。整个流程: 1. 截取当前页面渲染结果 2. tesseract-wasm 本地 OCR (不上传任何数据) 3. 拿到文字 + 每个词的 bounding box 坐标 4. 送进 Kokoro TTS 生成语音 5. 用 bounding box 做段落级高亮跟随 首页 OCR 2-3 秒,之后自动翻页 + 预处理下一页,听的时候感觉不到延迟。 还做了个「发送到手机」功能,点一下通过 Telegram 把音频推到手机,自动翻页持续朗读。相当于把 Kindle 书库变成免费有声书。 技术细节写了一篇博客: https://castreader.ai/blog/how-castreader-cracks-kindle-font-encryption 扩展免费,不要账号: - Chrome: https://chromewebstore.google.com/detail/castreader-tts-reader/foammmkhpbeladledijkdljlechlclpb

    有什么技术问题欢迎讨论

    1 条回复
    vinxu
        1
    vinxu  
    OP
       1 小时 56 分钟前
    对了,做微信读书页面版本的 tts 适配也花了不少时间,不过现在已经可以 tts+高亮跟随了,也可以一键下到手机。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5580 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 21ms UTC 08:20 PVG 16:20 LAX 01:20 JFK 04:20
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86