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 的語言套件)。

工作原理(高階)

  1. 使用者觸發提取 – 透過支援檔案的右鍵功能表項目。
  2. 檔案類型偵測 – 插件檢查副檔名(.png.pdf.docx 等),判斷是否可處理。
  3. OCR / 解析
    • 圖片 → Tesseract.js(基於 WebAssembly 的 OCR)。
    • PDF → pdf-extract 套件,提取內嵌文字,或在每頁上回退至 OCR。
  4. 快取 – 結果字串以小型 .json 檔案形式儲存在插件資料夾中。後續呼叫立即回傳快取版本,並可在裝置間同步。
  5. API 公開 – 其他插件可透過導出的 TextExtractorApi 呼叫 extractText(file) 或查詢 isInCache(file)

主要限制(如 README 所述)

  • PDF 提取不穩定 – 許多 PDF 無法成功提取文字;問題追蹤器中有多個開放問題。
  • 無行動裝置支援 – OCR 套件無法在 Obsidian 的行動應用中執行,因此除非存在快取副本,否則插件會回傳空字串。
  • 首次執行需網路 – Tesseract 的語言資料會按需下載。
  • 未維護 – 原作者已退出;歡迎貢獻,但無積極開發保證。

開始使用

  1. 透過 Obsidian 社群插件瀏覽器安裝,或從 GitHub 下載最新版本。
  2. 開啟筆記,右鍵點選支援的檔案,選擇 提取文字
  3. 提取的文字會儲存在快取中,可被其他插件(如 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 技術,讓圖片類筆記可被搜尋與重用。

相關

  • 專案
  • 專案
  • 專案
  • 專案