scambier/obsidian-text-extractor
A (companion) plugin to facilitate the extraction of text from images (OCR) and PDFs.
Obsidian Text Extractor – 是什么
一个由社区制作的 Obsidian 插件,可让你从通常仅包含图像或扫描页面的文件(PNG/JPG/… 图像、PDF 文档和 Office 文件(DOCX、XLSX))中提取纯文本。它通过在浏览器中直接调用开源 OCR 引擎 Tesseract.js(以及一个 PDF 解析辅助工具),然后将结果缓存,以便其他插件(例如 Omnisearch)可以复用。
为什么重要
- 可搜索的笔记 – Obsidian 内置搜索无法识别图像或扫描 PDF 中的文本。此插件使这些隐藏文本对库索引及其他需要它的插件可见。
- 单一事实来源 – 无需每个插件都实现自己的 OCR 流水线,它们都可以调用同一 API,节省内存和 CPU。
- 本地处理 – OCR 在用户的浏览器中运行;不会将数据发送到远程服务器(唯一网络流量是首次使用时下载 Tesseract 的语言包)。
工作原理(概览)
- 用户触发提取 – 通过支持文件的右键菜单项。
- 文件类型检测 – 插件检查扩展名(
.png、.pdf、.docx等),判断是否可处理。 - OCR / 解析 –
- 图像 → Tesseract.js(基于 WebAssembly 的 OCR)。
- PDF →
pdf-extract库,提取嵌入文本,或在每页上回退到 OCR。
- 缓存 – 结果字符串以小型
.json文件形式保存在插件文件夹中。后续调用立即返回缓存版本,并可在设备间同步。 - API 暴露 – 其他插件可通过导出的
TextExtractorApi调用extractText(file)或查询isInCache(file)。
主要限制(如 README 所述)
- PDF 提取不稳定 – 许多 PDF 无法提取文本;问题追踪器中存在多个开放问题。
- 无移动支持 – OCR 库无法在 Obsidian 移动应用中运行,因此除非存在缓存副本,否则插件返回空字符串。
- 首次运行需要互联网 – Tesseract 的语言数据按需下载。
- 未维护 – 作者已退出;欢迎贡献,但无积极开发保证。
快速上手
- 通过 Obsidian 社区插件浏览器安装,或从 GitHub 下载最新发布版。
- 打开一个笔记,右键点击支持的文件,选择 提取文本。
- 提取的文本将保存在缓存中,可被其他插件(如 Omnisearch)或通过 README 中所示的 API 访问。
开发者指南
export type TextExtractorApi = {
extractText: (file: TFile) => Promise<string>
canFileBeExtracted: (filePath: string) => boolean
isInCache: (file: TFile) => Promise<boolean>
}
export function getTextExtractor(): TextExtractorApi | undefined {
return (app as any).plugins?.plugins?.['text-extractor']?.api
}
在其他 Obsidian 插件中使用上述代码,调用 await getTextExtractor()?.extractText(myFile)。
总结:Obsidian Text Extractor 是 Obsidian 笔记系统中一个实用的、本地运行的 OCR 辅助工具。它并非研究级 AI 模型,但利用现有的基于 ML 的 OCR 技术,使图像类笔记可被搜索和复用。
相关
- 项目
- 项目
- 项目
- 项目