
最近在做一个浏览器 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
有什么技术问题欢迎讨论