资讯详情

思源笔记 v3.4.1 版本更新解析:OCR 超时配置、索引效能、事件总线与细节改进全解

📅 2026/9/11 13:11:59 | 华诺云谱 👁 阅读
思源笔记 v3.4.1 版本更新解析:OCR 超时配置、索引效能、事件总线与细节改进全解
思源笔记 v3.4.1 版本更新解析OCR 超时配置、索引效能、事件总线与细节改进全解【免费下载链接】siyuanAn open-source, privacy-first, self-hosted knowledge workspace where humans and AI agents work together 开源、隐私优先、自托管的知识工作空间让人与智能体在此协作项目地址: https://gitcode.com/GitHub_Trending/si/siyuan导读本文以思源笔记SiYuanv3.4.1 版本的官方更新日誌為核心逐條解析本次更新中涉及的功能改進、缺陷修復與開發者介面變更並結合 kernel/util/ocr.go 等倉庫原始碼深入講解 OCR 超時環境變數、圖片格式支援、事件總線等改動的底層實現與實際用法。讀完本文你將能掌握 v3.4.1 的各項細節改動、正確配置 Tesseract OCR 的環境變數並了解如何在前端訂閱檔案樹筆記本排序變更事件。版本概述思源筆記 v3.4.1 是 v3.4 系列的一次細節改進版本官方將其定位為「改進了一些細節」。從變更清單看本次更新涵蓋 16 項功能改進、1 項缺陷修復與 2 項開發者介面變更重點集中在資料庫操作互動、行動端體驗、OCR 能力、搜尋與大綱定位、主題與程式碼片段載入效能以及資料索引效能等方向。完整變更清單見 v3.4.1 更新日誌。功能改進詳解資料庫複製為副本後不再自動加入資料庫此前資料庫綁定的區塊在複製為副本duplicate後會自動加入原資料庫這對需要建立獨立副本的場景會造成困擾。v3.4.1 起複製產生的副本不再自動加入資料庫使用者可以更自由地決定副本的歸屬避免資料庫意外膨脹。iframe掛飾渲染改良本次更新改良了 iframe 與掛飾widget的渲染方式。掛飾在思源中是透過 iframe 嵌入的擴充元件此項改動直接影響 kernel/model/widget.go 所管理的掛飾載入流程主要解決了嵌入內容在部分情境下的渲染穩定性問題。iOS 系統列印支援行動端體驗方面v3.4.1 新增在 iOS 上呼叫系統列印的能力使用者可以直接透過 iOS 系統列印對話框輸出文件不再依賴應用內建列印流程。與之對應的「改進行動版列印」改動則同時優化了行動端的列印介面與輸出效果兩者結合提升了行動端的完整輸出鏈路。匯出介面支援執行 JS 程式碼片段這是一項對進階使用者相當實用的改動匯出介面現在可以執行 JS 程式碼片段。使用者可以在匯出前透過自訂 JavaScript 對內容進行預處理實現自訂匯出流程。這與思源既有的程式碼片段snippet體系見 kernel/model/snippet.go相輔相成讓匯出能力從「固定流程」走向「可程式化」。快速搜尋不包含鍵位條件v3.4.1 調整了快速搜尋quick search的行為搜尋關鍵字不再隱式包含鍵位keyboard shortcut條件比對避免使用者在搜尋時被鍵盤快捷鍵名稱干擾讓搜尋結果更聚焦於文件內容本身。開啟搜尋結果時將區塊置中並加亮搜尋結果的開啟體驗得到強化點擊搜尋結果跳轉後目標區塊會被自動置中並高亮顯示。前端對應的高亮樣式實現在 app/src/protyle/index.ts 中透過::highlight(search-mark-*)偽元素為搜尋命中區塊套用背景與前景高亮色幫助使用者快速定位命中內容在文件中的具體位置。改進資料庫操作互動資料庫屬性視圖的操作互動在本次更新中得到改善涉及資料表的新增、排序、篩選等操作的即時回應與視覺回饋。相關底層邏輯可參考 kernel/av/layout.go 與 kernel/sql/av_table.go 等模組。主題切換與程式碼片段更新後的介面載入切換主題或更新程式碼片段後介面載入效率得到改善減少了載入期間的閃爍與停頓。主題與程式碼片段的熱更新機制分別見於 kernel/model/theme.go 與 kernel/model/snippet.go。改進資料索引效能資料索引效能在此版本中獲得提升。索引佇列與寫入流程實現在 kernel/sql/index_queue.go 與 kernel/sql/queue.go 中此類最佳化通常體現在大量文件更新、區塊移動或資料庫操作後的索引重建速度上。改進大綱定位大綱outline定位能力得到改善確保在長文件中透過大綱面板跳轉時能準確定位到對應標題區塊。改進 HTMLSVG 剪藏網頁剪藏方面HTML 與 SVG 內容的剪藏處理得到改進減少剪藏後內容遺失或格式錯亂的情況。剪藏相關的內容轉換邏輯可參考 kernel/model/md2html.go。瀏覽器複製選單新增「複製網頁 URL」針對瀏覽器端使用場景v3.4.1 在複製上下文選單中新增了「複製網頁 URL」選項。該選單項在 app/src/menus/commonMenuItem.ts 中以copyWebURL標識註冊方便使用者直接複製目前區塊對應的網頁 URL用於分享或外部引用。區塊開頭 ZWSP 處的左右方向鍵行為針對區塊開頭的零寬空格Zero Width Space, ZWSPv3.4.1 改善了左右方向鍵的光標移動行為避免光標在不可見字元處產生令人困惑的跳躍提升了編輯器的鍵盤操作體驗。圖片 OCR 支援更多格式OCR 支援的圖片格式得到擴充。從 kernel/util/ocr.go 中的tesseractExts清單可以看到目前 Tesseract OCR 支援的副檔名包括格式副檔名PNG.pngJPEG.jpg、.jpegTIFF.tif、.tiffBMP.bmpGIF.gifWebP.webpPNM 家族.pbm、.pgm、.ppm、.pnmIsTesseractExtractable函式會先判斷圖片副檔名是否屬於上述清單才進入 OCR 流程。除此之外OCR 還有其他環境變數約束SIYUAN_TESSERACT_ENABLED設為false可關閉 OCR見 ocr.goSIYUAN_TESSERACT_MAX_SIZE限制參與 OCR 的圖片最大位元組數預設約為 2 MB見 ocr.go 與 ocr.goSIYUAN_TESSERACT_LANGS以分隔指定參與 OCR 的語言包白名單未設定時預設採用eng、chi*、fra、spa、deu、rus、jpn、osd等語言見 ocr.go。OCR 的結果文字會寫入資料目錄下的ocr-texts.json見 ocr.go供全文檢索引用。圖片 OCR 支援透過環境變數設定逾時這是本次更新最值得深入的一項基礎設施改動。此前 Tesseract OCR 使用固定的逾時時間遇到超大圖片或低效能裝置時可能長時間佔用資源v3.4.1 起可以透過環境變數SIYUAN_TESSERACT_TIMEOUT自訂逾時。在 kernel/util/ocr.go 的Tesseract函式中實現邏輯如下預設逾時為7000毫秒7 秒讀取環境變數SIYUAN_TESSERACT_TIMEOUT若存在則嘗試以strconv.Atoi解析為毫秒整數解析成功則覆寫逾時值解析失敗則記錄警告日誌parse tesseract timeout [...] failed並沿用預設值透過context.WithTimeout建立帶逾時的上下文並以exec.CommandContext執行 Tesseract 命令當ctx.Err()為context.DeadlineExceeded時記錄逾時警告並放棄本次 OCR返回空結果。配置範例以毫秒為單位# 將 OCR 逾時調整為 15 秒 export SIYUAN_TESSERACT_TIMEOUT15000 # 啟動思源內核桌面端可透過啟動環境變數注入 ./kernel注意該環境變數的單位是毫秒ms且僅對 Tesseract OCR 流程生效若設定的值過小可能導致大型圖片頻繁逾時、OCR 無法返回結果建議根據圖片尺寸與機器效能合理設定。另外OCR 全程透過全域互斥鎖tesseractOCRLock串行執行見 ocr.go目的是保證穩定性因此在圖片較多時OCR 佇列可能耗時較長合理的逾時設定能避免單張異常圖片阻塞整個流程。缺陷修復S3 資料同步導致內核啟動崩潰v3.4.1 修復了使用 S3 資料同步時可能導致內核啟動崩潰的問題。S3 同步在思源中作為可選的資料同步提供方相關 API 註冊於 kernel/api/router.goPOST /api/sync/setSyncProviderS3設定 S3 同步提供方POST /api/sync/exportSyncProviderS3匯出 S3 同步配置POST /api/sync/importSyncProviderS3匯入 S3 同步配置。此修復針對的是內核啟動階段載入 S3 配置時可能觸發的崩潰路徑升級至 v3.4.1 後使用 S3 同步的使用者無需調整既有配置即可獲得修復。開發者事件總線新增兩個排序變更事件filetreeSortChanged檔案樹排序變更當檔案樹文件樹中的子區塊順序發生變化時內核會透過事件總線廣播filetreeSortChanged事件。廣播實現在 kernel/model/file.go 的pushFiletreeSortChanged函式中函式接收一個sortIDs映射子區塊 ID → 排序值對子區塊 ID 按排序值升序排列透過util.BroadcastByType(main, filetreeSortChanged, ...)向main類型客戶端推送事件事件負載包含parentPath父路徑與childIDs排序後的子區塊 ID 列表。外掛或前端可訂閱該事件以同步檔案樹排序狀態例如自訂檔案樹 UI 的即時排序。notebookSortChanged筆記本排序變更與之對應筆記本層級的排序變更會廣播notebookSortChanged事件實現在 kernel/model/box.go用於通知筆記本Notebook列表的順序變化。檔案樹排序事件粒度更細單一父路徑下的子區塊而筆記本排序事件粒度更粗筆記本整體順序。這兩個事件均透過內核事件總線推送是外掛開發者訂閱排序變更的標準入口詳見 kernel/model/file.go 與 kernel/model/box.go 中的對應廣播點。下載與升級v3.4.1 的安裝包可透過思源官方下載頁面取得桌面端與行動端同步更新升級前建議先備份工作空間workspace並確認 OCR 相關環境變數若已配置與新版本相容。升級後可透過「設定 → 關於」確認目前版本號驗證是否已更新至 v3.4.1。小結v3.4.1 雖然定位為細節改進版本但其改動面相當廣泛資料庫副本行為、iOS 系統列印、匯出 JS 程式碼片段、搜尋跳轉高亮、OCR 格式與逾時配置、S3 同步崩潰修復以及事件總線新增的兩個排序事件分別惠及普通使用者、行動端使用者、進階使用者與外掛開發者。尤其是SIYUAN_TESSERACT_TIMEOUT的加入讓 OCR 流程在大型圖片與低效能環境下具備了可調控的資源邊界是本次更新中最具工程價值的基礎設施改進。【免费下载链接】siyuanAn open-source, privacy-first, self-hosted knowledge workspace where humans and AI agents work together 开源、隐私优先、自托管的知识工作空间让人与智能体在此协作项目地址: https://gitcode.com/GitHub_Trending/si/siyuan创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。