"知識は秩序の元で飛躍し、知恵として輝く。
堅固な繋がりは深みを増し、知を永続させる。"
Synapsen (シナプセン) は、スキャンしたPDFノートやドキュメントを、デジタル・ツェッテルカステン(Zettelkasten)風に管理・閲覧するためのツールセットです。
このプロジェクトは、以下の3つの連携するアプリケーションおよびその他のツール(Extras)で構成されています。
- Normalisierer (正規化): PDFのフォームや手書き注釈をページに焼き込み(フラット化)、指定サイズ (A4/A5) に統一します。メタデータの埋め込みも行います。
- Ersteller (作成・統合): ノートにメタデータを付与・抽出し、月ごとに1冊のPDFに統合します。
- Nexus (閲覧・検索): 統合されたノートのデータベースを、強力な検索・リンク機能で閲覧・編集します。
- Canvas (構造化・思考): ノートをカードとして自由に配置し、視覚的に接続・整理して新たな知見を生み出します。(Nexus内の機能です)
このツールセットは、書籍『情報は1冊のノートにまとめなさい[完全版]』(奥野 宣之 著, ISBN: 9784478022009) で紹介されている、情報を一元管理するという思想に強く感銘を受けて作成されました。アナログ・デジタルの情報を一元化し、「時系列」で管理しつつ「タグ」や「目次」で検索性を高めるという理論を、スキャンPDFや電子ペーパー(デジタルノート)で実現することを目的としています。
これに加え、本ツールは伝統的な知識管理術である「コモンプレイス・ブック (Commonplace Book)」の概念も取り入れています。 本ツール独自の Index Key (コモンプレイス Key) は、この「コモンプレイス」のKey(索引)の概念に由来しており、時系列やタグとは異なる「テーマ」や「概念」でノートを横断するための機能です。
スキャンしたPDF、Markdownファイル、Webページ、画像などを、Ersteller で処理できる形式に変換します。
-
PDFフォームと注釈のフラット化:
- PDFフォーム(テキストボックス等)の入力内容を、テキストとしてページに焼き込みます。
- インク注釈のフラット化設定 (
flatten_ink_annotations):config.iniでtrueに設定すると、ハイライトとリンク以外の注釈(手書きインク等)をページ背景に焼き付けます。- ※筆圧情報は失われます
false(デフォルト) に設定すると、インク注釈をそのまま維持します。筆圧情報(入り抜き等)は保たれますが、デバイスによっては動作が重くなる可能性があります。- ※注意:
false設定でサイズ正規化(Erstellerでのヘッダー・フッター領域確保のためのリサイズ処理を含む)が行われたページに対し、QUADERNO等の端末上でペンの書き込みや消去を行うと、仕様により手書きインクの注釈のサイズが元に戻り、表示が崩れたりする場合があります。
-
サイズ正規化: すべてのPDFページを
config.iniで指定された用紙サイズ(A4またはA5)の縦サイズに(アスペクト比を維持して)リサイズ・中央配置します。 -
D&D / ペーストによるクリップ:
PDF,PNG,JPG,MD(Markdown) ファイルのD&D、またはクリップボードのスクリーンショット(Ctrl+V)に対応します。- 画像補正 (Microsoft Lens 風機能):
- 取り込んだ画像に対し、Microsoft Lens (旧 Office Lens) のような4隅指定による台形補正を行い、正面から見た画像に変形・トリミングする機能を搭載しています。
- モバイルアプリやクラウド機能に頼ることなく、PC上のローカル操作だけでスキャン画像やホワイトボードの写真を直感的に補正・取り込みできます。
- リスト編集・統合機能:
- クイックプレビュー: リスト上のアイコンにマウスオーバーするだけで、画像の内容(またはPDFの表紙)をポップアップで確認できます。
- 並び替え: アイコンをドラッグすることで、ファイルの結合順序を直感的に変更可能です。
- ファイルの統合: 「処理対象ファイルを1つのノートに統合する」オプションを使用することで、バラバラの画像やPDFを1つのPDFノートとしてまとめて正規化できます。
- タグ情報の自動埋め込み:
- 書誌情報の入力: 著者名やサイト名を入力すると、情報源であることを示す識別子が埋め込まれ、システム取り込み時に
ZTypes_Sourceタグが自動付与されます。 - WebClipとして扱う: チェックボックスをONにすると、手動クリップであっても
SType_WebClipおよびZTypes_Sourceタグが自動付与されます。
- 書誌情報の入力: 著者名やサイト名を入力すると、情報源であることを示す識別子が埋め込まれ、システム取り込み時に
- 実行時に IndexKey, コメント, 書誌情報 を一括で指定可能です。
- Markdown (.md) ファイルは、
PandocとPlaywrightを経由してPDFに自動変換されます。<details>タグは自動的に展開(<details open>)され、内容がPDFに含まれます。
-
Webクリップ (URLからPDF化):
- 指定したURLを
Playwrightを使用してPDFとして保存します。 - PDFや画像ファイルへの直接URLにも対応。HTML以外はファイルを直接ダウンロードして正規化します。
- 実行時に IndexKey, コメント, 書誌情報(著者名、サイト名など)を入力可能です。
- Webクリップとして作成されたPDFには、システム取り込み時に
SType_WebClipおよびZTypes_Sourceタグが自動付与されます。
💡 Tips: 自動Webクリップがうまくいかない場合(手動クリップ) ログインが必要なサイトや、動的なコンテンツにより自動取得が崩れてしまう場合は、以下の「手動クリップ」運用が推奨されます。
- ブラウザの機能でPDF化:
- ブラウザの「印刷 > PDFとして保存」機能を使用して、ページをPDF化します。
- Edgeの「スマート印刷」オプションで印刷すると、より正常に印刷できます
- スクリーンショット:
- 見た目をそのまま保存したい場合は、ページ全体のスクリーンショットを撮り、クリップボードにコピーします。
- Normalisiererへ取り込み:
- 保存したPDFを「D&D / ペースト」ウィンドウにドロップするか、スクリーンショットを
Ctrl+Vで貼り付けます。 - このウィンドウで「URL」や「サイト名」などの書誌情報を手動入力し、「WebClipとして扱う」にチェックを入れることで、自動クリップと同様のタグ・メタデータ付き正規化PDFを作成できます。
- 保存したPDFを「D&D / ペースト」ウィンドウにドロップするか、スクリーンショットを
- 指定したURLを
-
クリップ形式(共通):
- 「D&D/ペースト」および「Webクリップ」で生成されるPDFは、1ページ目にIndexKeyとユニークID (
key) を持つQRコードが埋め込まれます。 - 又、最終ページ(新規追加)にコメント・書誌情報・引用Key情報を持つQRコードが挿入されます。
- 「D&D/ペースト」および「Webクリップ」で生成されるPDFは、1ページ目にIndexKeyとユニークID (
-
テキスト抽出 (OCR):
- PDFに埋め込まれた既存のテキストレイヤー(テキストベースPDF)を抽出します。
- (オプション)
config.iniでenable_tesseract_ocr = trueに設定すると、テキストレイヤーが存在しない画像PDF(画像クリップやスキャンPDF)に対し、Tesseract OCR を使用してテキストを抽出し、検索可能な「透明テキストレイヤー」としてPDFに埋め込みます。
- (オプション)
- ローカルLLMを使用して、検索可能な「透明テキストレイヤー」を埋め込む事も出来ます。
- この方法の場合、実際の文字位置には埋め込まれない為、注意してください。
- 詳細はLocal LLMによるOCR機能のドキュメントを確認して下さい。
Synapsenは、Markdownの定義リスト記法を応用して、インタビューや台本のような「対話形式」のレイアウトを美しくPDF化する機能を備えています。
書き方:
-
話者名の次の行に、半角コロン
:と半角スペースを置いてセリフを書きます。生徒 : 分布容積とは何ですか? 講師 : 興味深い問いだな。その概念を理解するために、共に思考の旅に出てみるとしよう。
-
出力結果:
- PDF出力時には、自動的に左側に「話者」、右側に「セリフ」が配置され、読みやすいグリッドレイアウト(ぶら下がりインデント)に変換されます。
Normalisierer のサイズ正規化処理をバックグラウンドで自動実行するための常駐型スクリプト Synapsen_Watchdog.py 及びそれを起動する Run_Watchdog.bat を同梱しています。
(※ pdf_utils.py に依存しているため、同じ階層にこちらのファイルも存在しないと機能しません。)
ScanSnapなどのスキャナ保存先フォルダを監視し、PDFファイルが保存されると即座に自動で正規化処理(サイズ統一)を行い、QUADERNO(クアデルノ)の同期フォルダ等へ移動させることができます。
💡 QUADERNOユーザーへのメリット QUADERNOで編集(書き込み)を行う前にこのツールでファイルを正規化しておくことを推奨します。 これにより、Normalisiererの設定で「インクのフラット化を無効 (
flatten_ink_annotations = false)」にしている場合でも、QUADERNO上での編集時にインクのサイズや位置がズレる問題を回避することができます。
- 機能:
- 指定した「監視フォルダ」を常駐監視します。
- PDFファイルが追加されると、自動的に指定サイズ (A4/A5) にリサイズ・中央配置(正規化)します。
- 処理後のファイルは「出力フォルダ」に保存され、元のファイルは削除されます。
- 使い方:
config.iniの[Watchdog]セクションを編集し、設定を記述します。[Watchdog] ; 監視するフォルダ watch_dir = C:\Users\YourName\Downloads\Inbox ; 処理済みファイルの保存先 output_dir = C:\Users\YourName\Documents\Normalized ; 正規化するサイズ (A4 または A5) target_size = A4
Run_Watchdog.batを実行します。- 起動中はフォルダが監視され、処理が自動で行われます。終了するには
Ctrl+Cを押します。
Synapsen Normalisierer で正規化されたPDFを読み込み、メタデータを編集した上で、月報のような形で1つの統合PDFにまとめ上げるツールです。
-
ファイル名の自動解析:
- 日付やタイトルをファイル名から自動抽出します (
YYYYMMDD_hhmmss_タイトル.pdf形式を推奨)。 - (重要)
- この形式は
Nexusでのリンク機能([[key]])の基盤となるユニークID(key)を生成するために必須です。 - この形式でないファイルは
keyを持たず、マスターDBへの登録やリンクの対象から除外されます。
- この形式は
- 日付やタイトルをファイル名から自動抽出します (
-
メタデータの自動抽出:
- 1. PDFメタデータ (最優先)
Normalisiererで処理されたPDFには、メタデータ(Subjectフィールド)に隠しJSONとして情報が埋め込まれています。これを最優先で読み取ります。
- 2. QRコード
Normalisiererが埋め込んだQRコードをpyzbarで読み取り、Index Key、ユニークID (key)、および**引用情報(Refs)**を抽出します。- これは読み取り失敗時のフォールバック(安全策)として機能するだけでなく、印刷して紙媒体として利用している状態や、PCでNexusを起動していない状態でも、QRコードをスキャンすることでKeyや引用元情報へアクセス可能にする役割も担っています。
- 3. テキスト読み取り
- PDFの特定座標(
config.iniの[Extraction]で設定)からIndex Keyを自動抽出します。 - 主に、Index Key記入欄を持つ「PDFテンプレート(フォーム形式)」からの抽出を目的としています。
- PDFの特定座標(
- 4. "サイドノート"への継承
- ファイル名が
[親のタイトル] + _Note.pdfで構成される場合、そのファイルを「サイドノート」とみなし、親ノートの Index Key を自動的に継承します。 - これは電子ペーパー「QUADERNO (クアデルノ)」の "サイドノート" 機能に着想を得た機能です。
- ファイル名が
- 1. PDFメタデータ (最優先)
-
タグの自動付与 (Auto-Tagging):
- 埋め込まれた識別子やファイル名に基づき、以下のタグを自動的に付与します。
- システム出力タイプ (
SType_):SType_Canvas: Nexus Canvasで作成されたホワイトボード全体のPDFSType_Sticky: Nexus Canvasの「付箋」から作成されたPDFSType_WebClip: Webクリップ機能(または手動クリップ)で作成されたPDFSType_MOC: Nexusのエクスポート機能で作成された目次ノート (Map of Content)
- 思考の段階タイプ (
ZTypes_):ZTypes_Source: 情報源。Webクリップや、書誌情報が入力されたファイルに自動付与されます。
-
メタデータの編集機能:
- 個別編集: ノートごとにタグ、メモ、Index Key(索引キー)を編集できます。
- バッチ編集(一括編集):
- 複数のノートを選択し、Index Key、タグ、メモを一括で設定(追加・削除)可能です。
- タグ編集: 追加だけでなく、選択したノートに含まれるタグを一覧から選択して削除できます。
- メモ編集: リンクコピーなどを一括で追記できます。「上書きモード」スイッチにより、既存メモへの追記と完全上書きを切り替えることが可能です。
-
PDF統合・生成:
- 指定した月のノート群を1つのPDF(ボリューム)に統合します。
- ReportLabを使用し、目次、タグ索引、Index Key索引を自動生成して付与します。
Normalisiererが埋め込んだ本文テキスト(full_text)をPDFからオンデマンドで抽出し、マスターDBに保存します。
-
設定管理 (GUI):
- 設定 (Config) 画面:
config.iniを直接編集することなく、各種パス設定、OCR/自動化オプション、PDF生成設定(用紙サイズ・フォント・著者名など)をGUI上で変更できます。- 変更内容は保存時に
config.iniに書き込まれます。(反映には再起動が必要です)
- 設定 (Config) 画面:
-
データ保全・復旧機能:
- メタデータ埋め込み: 統合PDF生成時、全ノートのメタデータ(JSON)をPDFの添付ファイルとして埋め込みます。これにより、元ファイルやDBが消失しても統合PDF単体からシステムを完全に復旧可能です。
- メタデータ同期 (DB→PDF):
Nexusで行った編集(タグ付け、メモ、リンク)を、正本である統合PDFファイル(の埋め込みメタデータ)に書き戻して同期します。- 同期ロジック: DB上の「最終更新日時 (
updated_at)」とPDF内の「前回同期日時」を比較し、変更があるファイルのみを高速に処理します。 - 安全性: PDFの「増分保存 (Incremental Update)」機能を使用するため、同期を繰り返しても画質の劣化は一切発生しません。
- DB復旧ツール: 万が一データベースが破損・紛失した場合でも、統合PDFからデータベースを再構築できる専用GUIツールを搭載しています。
-
その他:
- 作業リストの保存: 現在の作業リストを中間ファイル(CSV)として(
full_textを除いて)保存・読み込みできます。 - 【重要】ユーティリティボタンの表示:
- 「設定 (Config)」「DB復旧ツール」「メタデータ同期」ボタンはツールバー右端に配置されています。ウィンドウサイズによっては隠れる場合があるため、見当たらない場合はウィンドウの横幅を広げてください。
- 作業リストの保存: 現在の作業リストを中間ファイル(CSV)として(
Ersteller が作成・追記した**マスターDB(SQLite / .dbファイル)**を読み込む、ノート閲覧・検索用のアプリケーションです。
-
高度な検索:
- 非同期検索: 検索ロジックをバックグラウンドで実行することで、大量のノートや重い全文検索を行ってもアプリの動作がフリーズしません。
AND,OR,NOT(-),( )演算子を使った検索。tag:,memo:,ikey:,fulltext:(またはtext:) などのプレフィックス検索。filename:(またはfile:) で、特定の統合PDFファイルに含まれるノートのみを検索可能。is:orphanで、どこからもリンクされていない(孤立した)ノートを検索可能。- 高度な日付検索
- 範囲検索
date:>=YYYYMMDD(以降),date:<=YYYYMMDD(以前),date:YYYYMMDD-YYYYMMDD(期間) などの日付範囲検索が可能。date:>=2024(年指定/以降),date:<=202303(年月指定/以前),date:>2024(より後),date:<2023(より前) など、省略記法にも対応。
- 年を指定しない検索
date:12-31: 毎年12月31日のノートを検索 (記念日や振り返りに)date:12-: 毎年12月のノートを全て検索 (季節性のタスクや傾向分析に)
- 範囲検索
- PDF本文(
full_text)を検索対象に含める「本文検索」チェックボックス。 - 「保存済み検索」でよく使う検索を登録可能。
-
タグリスト (Tag Explorer):
- 検索バー横の「Tag」ボタン(または
Ctrl+T)で、登録されている全タグを別ウィンドウで一覧表示します。 - ソート機能: 「件数順(頻出タグ)」や「名前順(辞書順)」で並び替えができ、データベース全体の傾向を俯瞰できます。
- クエリ作成支援:
- タグをクリックすると、検索バーに自動入力されます。
- ウィンドウ内の「AND / OR」スイッチを切り替えることで、現在の検索ワードに対して「絞り込み (AND)」するか「追加 (OR)」するかを直感的に制御できます。
- キーボードショートカット (
TabでAND/OR切替、Alt+Sでソート順切替など) にも対応しており、高速な操作が可能です。
- 検索バー横の「Tag」ボタン(または
-
キーボード操作の強化:
- 検索、リスト移動、プレビュー、Canvasへの送信など、主要な操作をキーボードのみで完結できます。(
Ctrl+F,P,Ctrl+Enter等)
- 検索、リスト移動、プレビュー、Canvasへの送信など、主要な操作をキーボードのみで完結できます。(
-
プレビュー:
- 高機能な詳細パネル:
- 右ペインは視認性に優れた2列レイアウトを採用。左側にメタデータ、右側にPDFプレビューを常時表示し、情報を瞬時に把握できます。
- インタラクティブな操作:
- 詳細パネル内の「タグ」「Index Key」「ファイル名」はクリック可能なリンクとなっており、ワンクリックで関連ノートを検索・絞り込みできます。
- ファイル名の横にある「📂」ボタンから、ファイルの保存場所(フォルダ)を直接開くことができます。
- スムーズな遷移:
- 検索結果のノートをダブルクリックすると、統合PDFの該当ページを直接表示。
- メモ内の
[[key]]形式のリンクから、別のノートを簡易プレビュー(読み取り専用ウィンドウ)で表示。プレビューウィンドウから直接編集画面へ遷移することも可能。
- ノート詳細表示時に、そのノートを引用している他のノート(被リンク元)を自動でリストアップ。
- 高機能な詳細パネル:
-
メタデータの編集と管理:
- 個別編集: ノートごとにタグ、メモ、Index Key(索引キー)を編集できます。
- 一括編集 (Batch Edit):
- 検索結果から複数のノートを選択し、メタデータをまとめて更新できます。
- タグ編集: 新規タグの「追加」だけでなく、選択したノートに含まれる既存タグを一覧から選択して「削除」することも可能です(タグの整理に最適です)。
- メモ編集: テキストやリンクを一括で追記できます。誤消去を防ぐため、
Erstellerの一括編集とは異なり「既存メモへの追記(Append)」モード固定で動作します。
⚠️ データの保存について:- Nexusで行った編集は、検索用のマスターデータベースのみに保存され、PDFファイル自体には即時反映されません。
- 編集内容をPDFファイル(長期保存用)にも反映させるため、定期的に
Erstellerの [メタデータ同期 (DB→PDF)] を実行することを推奨します。 - 運用の詳細は 実践ガイド: 手書きノートと知識の循環 を参照してください。
-
グラフ可視化:
- 全体グラフ (Global): 現在の検索結果に基づき、ノート間のリンクを全体的に可視化。
- 関連グラフ (Local): 選択したノートを中心とした、直接的なつながりを可視化。
- 選択グラフ (Selected): 複数選択したノートのみの関係性を可視化し、一時的な比較や構造化に利用可能。
- グラフ上のノードをダブルクリックでPDFを開いたり、右クリックでKeyをコピーすることが可能。
-
ナレッジワーク(創造的な情報の活用)支援機能:
- 複数選択: チェックボックスによるノートの複数選択。
Ctrl+Aで検索結果の全選択も可能。 - リンクの一括コピー: 選択したノートのリンク(
[[Key: Title]])を一括でクリップボードにコピーし、MOC(目次ノート)の作成を支援。 - Canvasへの送信: 選択したノートを
Ctrl+Enterで即座にCanvasに追加。ウィンドウを切り替えずに収集作業を行えます。 - ランダムノート(閃き): 現在の検索結果や全ノートからランダムにノートを表示。
- 保存済み検索: 現在の検索クエリを保存・管理・呼び出しできる「スマートフォルダ」機能。
- 除外タグ切り替え:
config.iniで指定したタグ(例:Status_Archive,Status_Done)を持つノートを、検索結果からデフォルトで除外します。- 画面上のチェックボックス(例: 「除外: Status_Archive」)をOFFにすることで、一時的に除外を解除し、全てのノートを表示できます。
- 複数選択: チェックボックスによるノートの複数選択。
-
データ保護:
- 自動バックアップ: アプリ終了時に、データベースのバックアップコピーを
db_backupsフォルダに自動作成します(日次更新)。- 直近7日分のデータが保持され、それより古いバックアップは自動的に削除されます。
- 自動バックアップ: アプリ終了時に、データベースのバックアップコピーを
-
エクスポート:
- 検索結果全体、または選択したノートのみを対象にエクスポート可能。
- メタデータCSV、本文TXT、グラフHTMLに加え、対象ノートを結合した**統合PDF(しおり付き)**を一括で出力可能。
- MOC (Markdown) 出力: 選択したノートへのリンク集(Map of Content)をMarkdownファイルとして出力。これをNormalisiererでPDF化することで、目次ノートとしてシステムに取り込むことができます。(取り込み時に
SType_MOCタグが自動付与されます)
-
DB直接編集:
- ノートのメタデータ(メモ、タグ、Index Key)をDBに直接書き込み・編集・削除する機能。
-
過去の今日:
- その日の初回起動時に、過去の今日のノートを通知する機能。
- 初回起動時にしか通知されませんが、
date: MM-DD AND date: <YYYY(今年)という検索クエリで、同様の検索結果が表示できます。
-
補遺:
- アプリは
config.iniで指定されたマスターDBを自動で読み込みます。 - PDFの自動検索:
- ノートに関連付けられた統合PDFや元ファイルは、
config.iniで設定したpdf_root_folderおよびpdf_archive_folder内(サブフォルダを含む)から自動的に検索・参照されます。 - これにより、ファイルの場所を(マスターDB直下のフォルダから)移動しても、設定されたフォルダ内であれば Nexusからそのまま閲覧可能です。
- 運用例:
- 今年度のファイルを「QUADERNO (クアデルノ)同期フォルダ (
root)」で管理し、過去の年度のファイルを「アーカイブフォルダ (archive)」内の年度別フォルダに移動して整理する、といった運用がスムーズに行えます。
- 今年度のファイルを「QUADERNO (クアデルノ)同期フォルダ (
- ノートに関連付けられた統合PDFや元ファイルは、
- 検索文字列の例 :
fulltext:PythonTag:SType_Sticky AND (ikey:アイデア OR 情報)(date:>=20240101 AND date:<=20251231) AND (ikey:アイデア OR ikey:学習・情報収集)
- 「本文・メモ検索」とプレフィックス検索の関係:
fulltext:Pyやmemo:会議のようにプレフィックスを指定した場合、「本文・メモ検索」チェックボックスの状態に関わらず、常にDBの本文・メモが検索対象となります。Pythonのようにプレフィックスを指定しない場合、「本文・メモ検索」チェックボックスがONの時のみ、DBの本文・メモが検索対象に含まれます。
- 検索バーの横にある「
?」ボタンから、date:範囲指定などを含む高度な検索プレフィックスの詳細なヘルプを確認できます。 - 検索バー横の「Tag」ボタンからタグリストを呼び出し、クリック入力でタグ検索を行うことができます。
- アプリは
Nexusから起動し、ノートをホワイトボード上に自由に配置して思考を整理するツールです。KJ法的なグルーピングや、ノート間の視覚的な接続を行います。
- ノートの配置: Nexusの「ノート追加」機能や、検索結果からノートをカードとして配置します。
- 効率的な操作系:
- キーボードショートカット: ツール切り替え (
V,C,T,R,L) やウィンドウ操作 (Ctrl+W) により、思考を止めずに操作できます。 - Undo/Redo:
Ctrl+Z(元に戻す) /Ctrl+Y(やり直し) に対応しており、安心して編集作業が行えます。
- キーボードショートカット: ツール切り替え (
- 視覚的なリンク(コネクタ):
- ノートや付箋同士を線で結ぶことで、関係性を可視化します。
- DB連携: 接続線をダブルクリック(または右クリック)することで、データベースのメモ欄に相互リンク(
[[Key: Title]])を自動追記、または削除できます。 - リンク状態の可視化: 相互リンクが既に存在する接続線は、自動的に緑色で表示されます。
- 付箋 (Sticky Note) 機能:
- アイデアやメモをその場で「付箋」として作成・配置できます。
- タイトルと内容: 付箋には「タイトル(1行)」と「内容(複数行)」を入力できます。
- 色分け: イエロー、ブルー、レッド、グリーン、ホワイト、グレーの6色から選択し、意味付けを行えます。
- ノートへの昇格: 付箋を右クリックして「PDFを作成」すると、正規化済みのPDFノートとして出力されます。
- 自動処理: 内部的にMarkdown生成 → Normalisierer処理(PDF化・正規化・メタデータ付与・QR埋め込み)が一括で行われます。
- タグの自動付与: 生成されたPDFには
SType_Stickyタグが付与されるようメタデータが埋め込まれます。 - 引用の自動継承: 付箋にコネクタで接続されているノートや、本文内に記述されたリンク(
[[Key]])は、自動的にそのノートの「引用 (References)」としてメタデータに記録されます。 これにより、作成されたPDFをErstellerで取り込んだ際、リンク関係が自動的に構築されます。 - 保存先: 生成されたPDFは
config.iniのnexus_output_folderに保存され、次回のErsteller作業時にスムーズに取り込めます。
- 付箋の結合: 複数の付箋を選択して「まとめてPDFを作成」することで、グルーピングしたアイデアを1つのノートに集約できます。結合されたPDFには、選択された全付箋に関連する(接続された)ノートが引用として集約・記録されます。
- 図形描画: 枠線(ラベリング用)や直線を描画して、情報を構造化できます。カード以外のこれらのアイテムも自由に選択・移動可能です。
- Nexus連携: キャンバス上で選択した複数のノートに対して、Nexus側で「OR検索」を即座に実行できます。
- PDF出力: キャンバスの状態をそのままPDFとして保存できます。
- 引用情報の埋め込み: キャンバス上に配置されている全てのノートのKeyが、出力PDFの「引用」としてメタデータに埋め込まれます。これにより、このキャンバスPDFをNexusに取り込んだ際、配置されていたノートへのリンク(参照関係)が保持されます。
- タグの自動付与:
SType_Canvasタグが付与されるようメタデータが埋め込まれます。 - Normalisiererでの再処理時に縮小されないよう、特殊なメタデータも付与されます。 画像出力: キャンバスの内容を高解像度の画像 (PNG/JPG) として保存できます。資料作成や共有に便利です。
- Mermaid出力: キャンバスの構造をテキストベースのMermaid記法としてクリップボードに出力します。
- NotionなどのMarkdown対応ツールに貼り付けることで、ダイアグラムとして再利用できます。
- データベースでリンクされている接続は実線、それ以外(一時的な接続や付箋との接続)は破線で表現されます。
- ※ 付箋の本文が長い場合、50文字で省略されます。
- ロギング: 全ツールにおいて、エラー発生時や処理状況を
logs/フォルダへ自動的に記録します。 これにより、トラブルシューティングが容易になります。
-
Synapsen_AI_Tagger (ローカルLLMを使用した、自動要約およびキーワード抽出ツール)
- ノートの冒頭(約3000文字)を読み込み、内容の要約とキーワード生成を行います。
- 詳細は、Synapsen_AI_Taggerの README を確認してください。
-
Synapsen Web (Webサーバーモード)
- PC上のNexusデータベースを、同一Wi-Fiネットワーク内にあるスマートフォンやタブレットから閲覧するための軽量Webサーバー機能です。
- ソファでくつろぎながら過去のノートを読み返したり、別室で資料を検索したりするのに最適です。
- 詳細は、Synapsen_WebのREADME を確認してください。
Synapsen Nexus/Canvas は、キーボード中心の操作で効率的に情報を整理できるように設計されています。
| キー | 機能 | 説明 |
|---|---|---|
| 📄 リスト操作 (ページネーション) | ||
← / → |
ページ移動 | 1ページずつ移動します。 |
Alt + HomeAlt + End |
先頭/末尾移動 | 最初のページ (1ページ目) 又は最終ページへ移動します。 |
| 📍 リスト操作 (カーソル・スクロール) | ||
↑ / ↓ |
リスト移動 | リスト内を1行ずつ移動します。 |
Home / End |
先頭/末尾移動 | リストの先頭または末尾へ移動します。 |
PageUp / PageDown |
ページ送り | リストをページ単位でスクロールします。 |
Ctrl + J |
リストへ移動 | 現在詳細パネルに表示しているノートをリスト内で探し、カーソルを合わせます。 |
| ✅ 選択・実行 | ||
Space |
選択切替 | カーソル行の選択状態(チェックボックス)を切り替えます。 |
Enter |
詳細表示 | カーソル行のノート詳細を右ペインに表示します。 |
Shift + Enter |
PDFを開く | カーソル行のノートのPDFを開きます。 |
Shift + 移動 |
範囲選択 | 始点から現在位置までを範囲選択します。(以前の選択は解除されます) |
Ctrl + Shift + 移動 |
追加範囲選択 | 既存の選択を維持したまま、新たな範囲を選択に追加します。 |
Ctrl + A |
すべて選択(ページ) | 現在表示しているページのノートを、すべて選択状態にします。 |
Ctrl + Shift + A |
すべて選択(検索結果) | 検索結果のノートを、すべて選択状態にします。 |
Ctrl + D |
選択解除 | 選択状態をすべて解除します。 |
| 🛠️ 編集・アクション | ||
Ctrl + E |
編集 | リストで選択しているノートの編集画面を開きます。 |
Ctrl + Shift + E |
一括編集 | 選択状態のノートに対して、一括編集画面を開きます。 |
Ctrl + Enter |
Canvasへ送る | 選択中のノートをCanvasに追加します。(Canvas未起動時はバックグラウンドで起動) |
Alt + S |
ソート切替 | リストの並び順(古い順/新しい順)を切り替えます。 |
| 🖥️ 画面表示・ツール | ||
R |
閃き (ランダム) | ランダムにノートを選んで表示します。 |
C |
キャンバスを開く | Canvasウィンドウを起動または前面に表示します。 |
P |
詳細プレビュー | 選択中のノートを別ウィンドウで大きく表示します。 |
G |
全体グラフ | データベース全体のつながりをグラフ表示します。 |
L |
関連グラフ | 選択中のノートを中心とした関連グラフを表示します。 |
F5 |
再読み込み | データベースをリロードして最新の状態にします。 |
Ctrl + B |
詳細パネル切替 | 右側の詳細パネル(プレビュー)の表示/非表示を切り替えます。 |
Ctrl + Shift + B |
フィルタパネル切替 | 左側のフィルターパネルの表示/非表示を切り替えます。 |
| 🔍 検索 | ||
Ctrl + F |
検索フォーカス | 検索バーに入力フォーカスを移動し、全選択します。 |
Esc |
入力解除 | 入力欄からフォーカスを外します。 |
| キー | 機能 | 説明 |
|---|---|---|
← (左矢印) |
ページ移動 | 前のページへ移動します。 |
→ (右矢印) |
ページ移動 | 次のページへ移動します。 |
Enter |
PDFを開く | 詳細表示中のPDFを、外部ビューアで開きます。 |
Space |
表示モード切替 | 縮小/拡大表示 (モード) を切り替えます。 |
L |
関連グラフ | 詳細表示中のノートを中心とした関連グラフを表示します。 |
Ctrl + E |
編集 | 選択中のノート編集画面を開きます。 |
Esc |
閉じる | プレビューウィンドウを閉じます。 |
| キー | 機能 | 説明 |
|---|---|---|
Tab |
検索条件切替 | 検索条件の設定 ("AND"/"OR") を切り替えます。 |
Alt + S |
ソートオーダー切替 | タグの並び順(昇順/降順)を切り替えます。 |
Alt + M |
ソートキー切替 | タグの並べ方(件数/名前)を切り替えます。 |
| キー | 機能 | 説明 |
|---|---|---|
V |
選択モード | 選択・移動ツールに切り替えます。 |
C |
接続モード | ノート間をリンクする接続ツールに切り替えます。 |
T |
付箋モード | 付箋作成ツールに切り替えます。 |
R |
枠線モード | 枠線描画ツールに切り替えます。 |
L |
線モード | 直線描画ツールに切り替えます。 |
N |
ノート追加 | Nexusで選択されているノートをCanvasに追加します。 |
Backspace / Delete |
削除 | 選択中のアイテムを削除します。 |
Ctrl + A |
すべて選択 | キャンバス上のすべてのアイテムを選択状態にします。 |
Ctrl + + |
ズームイン | キャンバスの表示を拡大します。 |
Ctrl + - |
ズームアウト | キャンバスの表示を縮小します。 |
Ctrl + 0 |
ズームリセット | キャンバスの表示倍率をリセット(全体表示)します。 |
↑ ↓ ← → / WASD |
アイテム移動 | 選択中のアイテムを移動します。(同時押しで斜め移動可) デフォルト: 高速移動 (10px) |
Shift + 移動 |
速度切り替え | 移動速度を切り替えます (高速⇔精密)。 押している間: 精密移動 (1px) |
Shift (2回押し) |
速度ロック切替 | デフォルトの移動速度設定を反転(ロック)させます。 |
Ctrl + Z |
元に戻す (Undo) | 直前の操作を取り消します。 |
Ctrl + Y |
やり直し (Redo) | 取り消した操作をやり直します。 |
Ctrl + S |
保存 | キャンバスの状態を上書き保存します。 |
Ctrl + W |
閉じる | Canvasを閉じてNexusに戻ります。 |
Esc |
キャンセル / 解除 | 選択解除、または選択モードへの復帰を行います。 |
手書きのノートは思考を深めるのに最適ですが、全文検索が難しいという弱点があります。 Synapsenでは、以下のフローで手書きノートを運用することで、検索性を確保しつつ知識を蓄積・循環させることができます。
-
取り込み (Fleeting Note):
- 手書きのメモやノートを
Normalisiererで取り込みます。 - タグは
ZTypes_Fleeting(走り書き)やZTypes_Source(情報源)とします。 - この段階ではOCR精度を気にせず、タイトルや日付などのメタデータさえ正確ならOKと割り切ります。
- 手書きのメモやノートを
-
清書と要約 (Permanent Note):
Nexusで手書きノート(PDF)をプレビューしながら、重要なポイントを要約・清書した新しいノートを作成します。- このノートは Markdown (.md), Word (.docx), テキスト (.txt) など、お好みの形式で作成してください。
- 作成したファイルを
Normalisiererで処理することで、自動的にPDF化・正規化され、Erstellerでデータベースへ統合・登録できるようになります。 - タグは
ZTypes_Permanent(永久保存版)とします。
-
リンクによる接続 (Linking):
- Permanentノートのメモ欄(または本文)に、元になった手書きノートへのリンク
[[Key: Title]]を記述します。 - Nexusの「リンクコピー」機能を使うと、手書きノートのリンクをワンクリックで取得できて便利です。
- Permanentノートのメモ欄(または本文)に、元になった手書きノートへのリンク
-
同期と点検 (Synchronization):
- 一連の知識整理が一段落したら、
Erstellerの**「メタデータ同期」**ボタンを押します。 - これにより、Nexus上で編集したタグ、メモ、リンク関係が、正本である統合PDFファイル自体に書き戻されます。
- 再構築の保証:
-
万が一データベースが破損・消失しても、同期済みのPDFさえあれば「DB復旧ツール」を使ってシステムを完全に再構築できます。
-
ここで書き戻されるデータは JSON形式のメタデータ としてPDF内に記録され、Synapsen以外のツールや自作スクリプト等からも容易に読み取ることが可能です。これにより、特定のツールに依存しない真の「Permanent Note(永久保存)」が完成します。
🛠️ Pythonコマンドによるメタデータ抽出例
以下のコマンドを使用する事で、Synapsenに依存せず、Pythonの標準的なライブラリ(
pypdf)のみでメタデータを抽出・確認する事が可能です。# 前提: pip install pypdf が必要です python -c "from pypdf import PdfReader; reader = PdfReader(r'抽出したいファイルのパス.pdf'); print(reader.attachments['synapsen_metadata_backup.json'][0].decode('utf-8'))"
-
- 一連の知識整理が一段落したら、
この運用のメリット:
- 形式不問の検索性確保: WordでもMarkdownでも、Normalisiererを経由することで統一されたPDFフォーマットとして管理され、Nexusからの全文検索が可能になります。
- 文脈の保存: 検索でヒットしたPermanentノートからリンクを辿ることで、当時の思考の痕跡(手書きのニュアンス)へ即座にアクセスできます。
- データ主権の確立: 定期的に「同期」を行うことで、知識ネットワークの情報がすべてPDFファイルの中に格納されます。これにより、将来的にSynapsen以外のツールへ移行する場合でも、データや関係性を失うことがありません。
- Python 3.13+
- Poetry
- 本プロジェクトは依存関係管理に Poetry を使用しています。
- 開発者やソースコードから実行するユーザーは、Poetryのインストールが必要です。
- (オプション) Tesseract OCR
Normalisiererで画像PDFのOCR(本文テキスト抽出)機能 を使う場合に必要です。- インストール後、
pytesseractが認識できるようPATHを通してください。 - 導入方法は、こちらの解説記事などを参考にしてください。
→ 画像から文字を瞬時に読み取る!Tesseractとpytesseractの驚異の力【Python】
- (オプション) Pandoc
NormalisiererでMarkdown (.md) ファイルのPDF変換機能を使う場合に必要です。Install_Poetry.batにより、wingetを使用して自動インストールを試みます。- 導入方法は、こちらの公式ページなどを参考にしてください。
→ Pandoc - Installing
- (オプション) pyzbar
Synapsen ErstellerでQRコード(Normalisiererが埋め込んだIndex Key/Key)を読み取るために使用します。- このライブラリがない場合でも、Erstellerは座標ベースのテキスト抽出で動作しますが、QRコードによる高精度なキー読み取りが有効化されません。
Install_Poetry.batまたはpoetry install --no-root --without devでインストールされます。
- Pythonライブラリ: (
pyproject.toml参照)- customtkinter (MIT License) - GUI構築用
- pandas (BSD-3-Clause License) - 索引データの管理・検索用
- NumPy (BSD-3-Clause License) - 画像補正(射影変換)の計算処理用
- PyMuPDF (fitz) (AGPL-3.0 License) - PDFの正規化・情報抽出・フラット化用 (※プロジェクト全体のAGPLライセンスの要因)
- pypdf (BSD-3-Clause License) - PDFの統合・正規化用
- reportlab (BSD-3-Clause License) - 統合PDF(目次・索引)の生成用
- Pillow (HPND License) - OCR処理のための画像操作用
- pytesseract (Apache-2.0 License) - Tesseract OCRエンジン連携用
- networkx (BSD-3-Clause License) - グラフ・ビジュアライゼーションのデータ構築用
- pyvis (MIT License) - インタラクティブなグラフ描画用
- tkinterdnd2 (MIT License) -
NormalisiererでD&D機能を実現するため - playwright (Apache-2.0 License) -
NormalisiererでWebクリップとMarkdown変換を実現するため - qrcode (BSD-3-Clause License) -
NormalisiererでメタデータQRコードを生成するため - pyzbar (MIT License) -
ErstellerでメタデータQRコードを読み取るため - Flask (BSD-3-Clause License) - Webサーバー機能を実現するマイクロフレームワーク
- watchdog (Apache-2.0 License) - フォルダ監視による自動正規化機能を実現するため
リポジトリの Releasesページ から、最新のリリースをダウンロードします。
- EXE版:
Synapsen_vxxx.zip(Synapsen.exe が含まれるパッケージ) - ソースコード版:
Source code (zip)
- 本パッケージ(ZIP解凍後)には、マニュアルとして以下の2つのファイルが含まれています。用途に合わせてご利用ください。
README.md(ルートフォルダ)- このファイルです。インストール方法やコマンドを確認するためのテキスト版マニュアルです。
samples/Synapsen_Manual.pdf- この
README.mdを Normalisierer で実際に処理(PDF化・正規化・メタデータ埋め込み)したサンプルファイルです。 - Ersteller の「統合」機能をすぐに試すための素材として、あるいは Nexus でタグやリンク機能を確認するためのデモデータとしてご利用ください。
- この
- 本パッケージ(ZIP解凍後)には、Synapsen 専用のPDFテンプレートが含まれています。
Synapsenをより便利に使うため、専用のPDFテンプレートの使用を推奨します。- これを使用すると、ノート作成時にIndex Keyを選ぶだけで、後で
Erstellerが自動で読み取るため、手動でIndex Keyを登録する手間が省けます。- テンプレートのIndex Keyを自分好みに変更する事も出来ます。詳しくはPDFテンプレートのカスタマイズ (上級者向け)を参照してください。
- また、このテンプレートを使用するとリサイズ処理(再圧縮)がスキップされる為、ドット方眼や罫線、書き込みなどが元々の画質を維持したまま統合されます。
- 統合時に付与するヘッダー・フッター情報分のマージンは既に確保している為、はみ出して記載しない限り、記入内容と被る事はありません。
- フォーム付き (
..._Form.pdf):- Index Keyを選択するプルダウンが付いたPDFです。
- QUADERNOでは「ドキュメント」として扱われ、ページ追加ができません。複製して使用して下さい。
- サイドノートと組み合わせる事でノートの1ページ目としてみなします。
- フォーム無し (
...Template.pdf):- ページ追加が可能な、通常の「ノート」テンプレートです。サイドノート(2ページ目以降)として使用します。
- QRコード付き (
..._IndexKey.pdf):- Webクリップと同様のヘッダー情報(QRコード及びIndex Key)を事前に焼き込んだ「ノート」テンプレートです。
- 通常のノートとして扱われるため、テンプレート設定やページ追加が可能です。
- フォーム付きテンプレートを毎回複製する手順が煩わしい場合や、テンプレートリストの数が増えても問題がない場合は、こちらを使用するのがお勧めです。
※ これらのテンプレートは CC0 (パブリックドメイン) です。自由にコピー、改変、再配布して構いません。
フォルダ内にある config.ini を開き、最低限 [Paths] セクションのパス を、ご自身の環境に合わせて編集します。
※ 推奨テンプレート (DotLegalPad) を使用する場合、[CommonplaceKeys] などの設定はデフォルトのままで動作します。
又、Ersteller を使用して、編集をする事も可能です。
【重要】パスの指定方法について:
config.ini 内のパス指定には、以下の3種類の記述方法が使用できます。
- 絶対パス (Absolute Path)
- 例:
C:\Users\Username\Documents\Synapsen\Tags.txt
- 例:
- 相対パス (Relative Path)
- 例:
./PDF_FilesまたはResources\Tags.txt config.iniがあるフォルダを基準としたパスです。フォルダごと移動させる運用(USBメモリ等)に便利です。
- 例:
- 環境変数 (Environment Variables)
- 例:
%LOCALAPPDATA%\Microsoft\Windows\Fonts\NotoSansJP.otf
- 例:
▼ クリックして設定ファイルの内容を表示
; ==============================================================================
; Synapsen Configuration File
; ==============================================================================
; ------------------------------------------------------------------------------
; [Paths] ファイル・フォルダパス設定
; ------------------------------------------------------------------------------
[Paths]
; --- データベースとフォルダ構成 ---
; Nexusでの情報表示に使用するマスターDBのパス
database_path =
; Erstellerで統合したPDFが存在するメインのフォルダ (ここを起点にサブフォルダも検索します)
pdf_root_folder =
; サブのフォルダ (アーカイブ用など。メインで見つからない場合に検索されます)
; 空欄の場合は検索がスキップされます
pdf_archive_folder =
; Nexus (Canvas付箋など) が生成する一時ファイル/Markdownの保存先
nexus_output_folder =
; --- リソースファイル ---
; 事前定義タグを保存しているテキストファイルのパス
tags_data_path =
; アプリケーション全体(正規化・PDF生成)で使用する日本語フォントファイルの絶対パス
; ※ 重要: 必ず ".ttf" (TrueType) または ".ttc" (TrueType Collection) 形式を指定してください。
; ".otf" (OpenType) や Variable Font は、PDF生成時にエラーになるため非推奨です。
; (例: "%LOCALAPPDATA%\Microsoft\Windows\Fonts\NotoSansJP-Regular.ttf")
; (例: "C:\Windows\Fonts\msgothic.ttc")
font_path =
; --- 外部アプリケーション ---
; PDFを開くブラウザの絶対パス
; (例: C:\Program Files\Google\Chrome\Application\chrome.exe)
; (未設定, または "Default" の場合はOSのデフォルトブラウザを使用します)
browser_path =
; ------------------------------------------------------------------------------
; [CommonplaceKeys] & Visuals
; ノートの分類(Index Key)とその見た目の定義
; ※ テンプレート(DotLegalPad_Config.py)の設定と一致させてください
; ------------------------------------------------------------------------------
[CommonplaceKeys]
; 使用する Index Key のリスト
options =
[KeyIcons]
; Nexusのリストやグラフ、統合PDFのヘッダーに表示するアイコン
[KeyColors]
; アイコンや枠線の色 (16進数カラーコード)
; ------------------------------------------------------------------------------
; [Automation] 自動処理設定
; Normalisierer (正規化) および Ersteller (統合) の挙動制御
; ------------------------------------------------------------------------------
[Automation]
; --- Normalisierer (正規化) 設定 ---
; Tesseract OCR (低速な光学文字認識) を実行するか (true/false)
; false の場合でも、PDFに埋め込まれた既存のテキスト抽出(高速)は実行されます。
; Tesseract-OCR をPCにインストールしていない場合は false にしてください。
enable_tesseract_ocr =
; ハイライト以外の注釈(手書きインク等)をページ背景に「フラット化」するか (true/false)
; true: インクをページに焼き付けます。筆圧情報(線の強弱)は失われ均一な線になります。
; false (デフォルト): インクを注釈のまま維持します。QUADERNO等での筆圧表示は保たれますが、大量の書き込みがある場合に動作が重くなる可能性があります。
flatten_ink_annotations =
; --- Ersteller (統合) 設定 ---
; 統合PDFを生成した際、[Paths]のdatabase_pathで指定されたマスターDBに、目次情報を自動で「追記」するか (true/false)
auto_append_to_default_db =
; 統合PDF生成時、目次情報(リストCSVとして再読込可能)を個別CSVとして「保存」するか (true/false)
create_individual_csv =
; ---Nexus 設定 ---
; Nexus起動時に、「過去の今日のノート」の通知を表示するか
enable_on_this_day =
; ------------------------------------------------------------------------------
; [Extraction] 読み取り設定
; PDFからのメタデータ抽出パラメータ
; ------------------------------------------------------------------------------
[Extraction]
; Erstrller で「座標読み取り」によって Index Key を取得する範囲
; (左, 上, 右, 下) のポイント座標
key_rect =
; Normalisierer が埋め込む「引用Key専用QRコード」のサイズ (pt単位)
; (デフォルト値 = 75。読み取り精度が悪い場合は 100 や 150 に増やしてください)
refs_qr_size =
; ------------------------------------------------------------------------------
; [ReportLab] PDF生成設定
; Ersteller が統合PDFを作成する際のスタイル設定
; ------------------------------------------------------------------------------
[ReportLab]
; 正規化及び統合の用紙サイズの指定 (A4/A5)
paper_size =
; PDFのプロパティ及び表紙に表示される著者名
author =
; PDFのタイトル接頭辞(この後ろに「(YYYY年 M月)」が付きます)
title_prefix =
; 1冊のPDFに含める最大ページ数 (ノート本文の合計ページ数)
; 0 を指定すると無制限(分割なし)になります。
max_pages =
; ------------------------------------------------------------------------------
; [Search] 検索設定
; Nexus での検索・入力補完の挙動
; ------------------------------------------------------------------------------
[Search]
; Nexusのタグ編集において、候補に全ノートで使用されているタグを含めるか (true/false)
; true: 全ノートのタグ + 事前定義タグ (「野良タグ」も再利用可能になります)
; false: 事前定義タグ(PDFTags.txt)のみ (ロードが高速で、候補が整理されます)
include_all_tags_from_db =
; アプリ起動時に、デフォルトで除外検索 (-tag:Tag) を適用するタグ
; 複数ある場合はカンマ区切りで記述します (例: Archive, Done)
; 空欄の場合は何もしません。Nexus画面上の「除外タグ」チェックボックスで切り替え可能です。
exclude_tags_by_default =
; ------------------------------------------------------------------------------
; [Watchdog] 常駐正規化機能の設定
; auto_watchdog.py で行う正規化の設定
; ------------------------------------------------------------------------------
[Watchdog]
; 監視するフォルダ
watch_dir =
; 正規化済みファイルの出力先
output_dir =
; 正規化するサイズ (A4 または A5)
target_size =
▼ クリックして設定ファイルの内容を表示
; ==============================================================================
; Synapsen Configuration File
; ==============================================================================
; ------------------------------------------------------------------------------
; [Paths] ファイル・フォルダパス設定
; ------------------------------------------------------------------------------
[Paths]
; --- データベースとフォルダ構成 ---
; Nexusでの情報表示に使用するマスターDBのパス
database_path = Synapsen_Master.db
; Erstellerで統合したPDFが存在するメインのフォルダ (ここを起点にサブフォルダも検索します)
pdf_root_folder = ./
; サブのフォルダ (アーカイブ用など。メインで見つからない場合に検索されます)
; 空欄の場合 検索がスキップされます
pdf_archive_folder =
; Nexus (Canvas付箋など) が生成する一時ファイル/Markdownの保存先
nexus_output_folder = Nexus_Output
; --- リソースファイル ---
; 事前定義タグを保存しているテキストファイルのパス
tags_data_path = PDFTags.txt
; アプリケーション全体(正規化・PDF生成)で使用する日本語フォントファイルの絶対パス
; ※ 重要: 必ず ".ttf" (TrueType) または ".ttc" (TrueType Collection) 形式を指定してください。
; ".otf" (OpenType) や Variable Font は、PDF生成時にエラーになるため非推奨です。
; (例: "%LOCALAPPDATA%\Microsoft\Windows\Fonts\NotoSansJP-Regular.ttf")
; (例: "C:\Windows\Fonts\msgothic.ttc")
font_path = C:\windows\fonts\msgothic.ttc
; --- 外部アプリケーション ---
; PDFを開くブラウザの絶対パス
; (例: C:\Program Files\Google\Chrome\Application\chrome.exe)
; (未設定, または "Default" の場合はOSのデフォルトブラウザを使用します)
browser_path = C:\Program Files\Google\Chrome\Application\chrome.exe
; ------------------------------------------------------------------------------
; [CommonplaceKeys] & Visuals
; ノートの分類(Index Key)とその見た目の定義
; ※ テンプレート(DotLegalPad_Config.py)の設定と一致させてください
; ------------------------------------------------------------------------------
[CommonplaceKeys]
; 使用する Index Key のリスト
options = タスク,アイデア,思考・考察,コミュニケーション,学習・情報収集,日常・その他
[KeyIcons]
; Nexusのリストやグラフ、統合PDFのヘッダーに表示するアイコン
タスク = ♥
アイデア = ♥
思考・考察 = ♥
コミュニケーション = ♥
学習・情報収集 = ♥
日常・その他 = ♥
[KeyColors]
; アイコンや枠線の色 (16進数カラーコード)
タスク = #FE0000
アイデア = #FFFF02
思考・考察 = #8802FF
コミュニケーション = #02FF01
学習・情報収集 = #02FFFF
日常・その他 = #F2F2F2
; ------------------------------------------------------------------------------
; [Automation] 自動処理設定
; Normalisierer (正規化) および Ersteller (統合) の挙動制御
; ------------------------------------------------------------------------------
[Automation]
; --- Normalisierer (正規化) 設定 ---
; Tesseract OCR (低速な光学文字認識) を実行するか (true/false)
; false の場合でも、PDFに埋め込まれた既存のテキスト抽出(高速)は実行されます。
; Tesseract-OCR をPCにインストールしていない場合は false にしてください。
enable_tesseract_ocr = false
; ハイライト以外の注釈(手書きインク等)をページ背景に「フラット化」するか (true/false)
; true: インクをページに焼き付けます。筆圧情報(線の強弱)は失われ均一な線になります。
; false (デフォルト): インクを注釈のまま維持します。QUADERNO等での筆圧表示は保たれますが、大量の書き込みがある場合に動作が重くなる可能性があります。
flatten_ink_annotations = false
; --- Ersteller (統合) 設定 ---
; 統合PDFを生成した際、[Paths]のdatabase_pathで指定されたマスターDBに、目次情報を自動で「追記」するか (true/false)
auto_append_to_default_db = true
; 統合PDF生成時、目次情報(リストCSVとして再読込可能)を個別CSVとして「保存」するか (true/false)
create_individual_csv = false
; ---Nexus 設定 ---
; Nexus起動時に、「過去の今日のノート」の通知を表示するか
enable_on_this_day = true
; ------------------------------------------------------------------------------
; [Extraction] 読み取り設定
; PDFからのメタデータ抽出パラメータ
; ------------------------------------------------------------------------------
[Extraction]
; Ersteller で「座標読み取り」によって Index Key を取得する範囲
; (左, 上, 右, 下) のポイント座標
key_rect = 0, 13, 391, 73
; Normalisierer が埋め込む「引用Key専用QRコード」のサイズ (pt単位)
; (デフォルト値 = 75。読み取り精度が悪い場合は 100 や 150 に増やしてください)
refs_qr_size = 75
; ------------------------------------------------------------------------------
; [ReportLab] PDF生成設定
; Ersteller が統合PDFを作成する際のスタイル設定
; ------------------------------------------------------------------------------
[ReportLab]
; 正規化及び統合の用紙サイズの指定 (A4/A5)
paper_size = A4
; PDF生成時に使用するフォントファイルの絶対パス (.ttf または .ttc)
; 空欄の場合は [Paths] セクションの font_path で指定したフォントが使用されます。
; ※ .otf (OpenType) や Variable Font は正常に動作しないため、必ず静的フォント(.ttf/.ttc)を指定してください。
; (例: "%LOCALAPPDATA%\Microsoft\Windows\Fonts\NotoSansJP-Regular.ttf")
font =
; PDFのプロパティ及び表紙に表示される著者名
author = Synapsen Ersteller
; PDFのタイトル接頭辞(この後ろに「(YYYY年 M月)」が付きます)
title_prefix = 月刊 統合ノート
; 1冊のPDFに含める最大ページ数 (ノート本文の合計ページ数)
; 0 を指定すると無制限(分割なし)になります。
max_pages = 400
; ------------------------------------------------------------------------------
; [Search] 検索設定
; Nexus での検索・入力補完の挙動
; ------------------------------------------------------------------------------
[Search]
; Nexusのタグ編集において、候補に全ノートで使用されているタグを含めるか (true/false)
; true: 全ノートのタグ + 事前定義タグ (「野良タグ」も再利用可能になります)
; false: 事前定義タグ(PDFTags.txt)のみ (ロードが高速で、候補が整理されます)
include_all_tags_from_db = true
; アプリ起動時に、デフォルトで除外検索 (-tag:Tag) を適用するタグ
; 複数ある場合はカンマ区切りで記述します (例: Status_Archive, Status_Done)
; 空欄の場合は何もしません
exclude_tags_by_default = Status_Archive
; ------------------------------------------------------------------------------
; [Watchdog] 常駐正規化機能の設定
; auto_watchdog.py で行う正規化の設定
; ------------------------------------------------------------------------------
[Watchdog]
; 監視するフォルダ
watch_dir = C:\Users\YourName\Downloads\Inbox
; 正規化済みファイルの出力先
output_dir = C:\Users\YourName\Documents\Normalized
; 正規化するサイズ (A4 または A5)
target_size = A4
利用スタイルに合わせて、以下の2通りの方法から選択できます。
Python環境を構築せず、配布された Synapsen.exe を使用する方法です。
- ダウンロード: Releasesページ から最新の
Synapsen.exeをダウンロードします。 - 準備:
- Markdown変換機能 (Pandoc) を使用したい場合は、同梱されている
install_option.batを実行してインストールしてください。 - Webクリップ機能 (URLのPDF化) を使用したい場合は、別途 Python 環境と Playwright の導入が必要です。(
install_option.batはPython環境がある場合のみブラウザをインストールします) - OCR機能 を使用したい場合は、動作環境・依存関係の項を参考に、
Tesseract OCRを手動でインストールしてください。
- Markdown変換機能 (Pandoc) を使用したい場合は、同梱されている
- 起動:
Synapsen.exeをダブルクリックして起動します。- 注意:
Synapsen.exeと同階層にconfig.iniとassetsフォルダが置かれているか確認してください。
- 注意:
Synapsen.exe に以下の引数を渡すことで、ランチャーを経由せずにツールを直接起動できます。
ショートカットを作成し、「リンク先」の末尾に追記することで、よく使うツールを素早く起動できます。
Synapsen.exe --nexus: Nexus (閲覧・検索) を起動Synapsen.exe --normalisierer: Normalisierer (正規化) を起動Synapsen.exe --ersteller: Ersteller (統合・編集) を起動Synapsen.exe --watchdog: Watchdog (フォルダ監視) を起動Synapsen.exe --server: Server (Webサーバーモード) を起動
Python環境を構築し、スクリプトを直接実行する方法です。 EXEファイルの展開プロセスがないため、最も高速に起動します。 開発やカスタマイズを行う方にも適しています。
- ダウンロード: Releasesページ から最新の
Source code (zip)をダウンロードします。 - 準備: 同梱されている
Install_Poetry.batを実行してください。- Poetry環境の構築、ライブラリのインストールを自動で行います。
- インストール中、AI機能 (Ollama連携) や 外部ツール (Playwright/Pandoc) のインストールの有無を選択できます。
- 起動: 以下のいずれかの方法で起動します。
Run_Launcher.batから実行 (推奨)- コマンドプロンプトで
poetry run python Synapsen_Launcher.pyを実行。
ソースコードからのビルド方法や、開発に参加するためのガイドラインについては、CONTRIBUTING.md を参照してください。
Synapsen はPDFテンプレートを使わなくても利用できます。その場合、Ersteller で「フォルダから新規読み込み」を行った後、リストから各ノートをクリックして、手動で「Index Key」を割り当ててください。
以下は、推奨テンプレート(DotLegalPad など)を使用して、Index Keyの入力を自動化する推奨ワークフローです。
QUADERNOでは「フォーム付きPDF(ドキュメント)」にページを追加できません。 以下の手順で2種類のテンプレートを使い分けます。
-
1ページ目 (Index Keyの指定):
- フォーム付きPDF (
..._Form.pdf) をQUADERNO上で複製して、新しいノート(ドキュメント)とします。 - ファイル名を
YYYYMMDD_hhmmss_タイトル.pdfの形式に変更します。 - ノート左上のプルダウンメニューから、そのノートの「Index Key」(例: 'アイデア')を選択し、1ページ目の内容を書き込みます。
- フォーム付きPDF (
-
2ページ目以降 (ページの追加):
- フォーム無しPDF (
...Template.pdf) を使って、QUADERNOの「サイドノートを作成」機能でページを追加します。 Synapsen Erstellerは、このサイドノート (..._Note.pdf) を自動で親ノートと紐付け、Index Keyを継承させます。
- フォーム無しPDF (
-
PCへのエクスポート:
- 書き終わったら、1ページ目のドキュメント(
..._Form.pdfを複製したもの)と、2ページ目以降のサイドノート(..._Note.pdf)の両方をPCにエクスポートします。 - (ScanSnapユーザーは、スキャンしたPDFを直接エクスポートフォルダに保存してください)
- 書き終わったら、1ページ目のドキュメント(
Synapsen_Normalisierer_main.pyを実行します。- 以下のいずれかの方法でファイルを処理します。
- A) フォルダ一括処理:
- 「入力/出力フォルダを選んで処理実行」をクリックします。
- 入力元フォルダ(スキャン及びQUADERNO (クアデルノ)で作成したPDF、または .md ファイルがある場所)を選択します。
- 出力先フォルダ(正規化済みPDFを保存する場所)を選択します。
- B) D&D / ペースト:
- 「D&D / ペースト」ボタンを押し、別ウィンドウを開きます。
- IndexKeyやコメントを入力し、ファイル(PDF/JPG/PNG/MD)をD&Dするか、スクリーンショットをCtrl+Vで貼り付けます。
- 必要に応じて、「処理対象ファイルを1つのノート(PDF)に統合する」にチェックを入れ、複数のファイルや画像を1つにまとめます。
- 画像の場合は、リスト内のサムネイルをホバーして確認したり、「変形/Crop」ボタンで台形補正を行ったりできます。
- 書誌情報入力: 手動で取り込んだファイルでも、書誌情報(サイト名など)を入力するか「WebClipとして扱う」にチェックを入れることで、後続処理で自動的にタグ (
ZTypes_Source,SType_WebClip) が付与されます。 - 「出力先を選んで処理実行」をクリックします。
- C) Webクリップ:
- 「Webクリップ」ボタンを押し、別ウィンドウを開きます。
- URLを入力し「ページ情報取得」をクリックします。(※PDF/画像への直接リンクにも対応)
- IndexKey、コメント、書誌情報を入力・編集します。
- 「出力先を選んでクリップ実行」をクリックします。
- 補遺:
「D&D/ペースト」および「Webクリップ」機能は、実行時に「入力/出力フォルダを選んで処理実行」機能(上記A)と同一の正規化処理(フォームのテキスト化、サイズ統一、OCR処理など)を自動的に実行します。
そのため、これらの機能で出力されたPDFを
Normalisiererで再度処理する必要はなく、そのままErstellerに読み込ませて使用できます。 この際、Normalisiererは1ページ目にIndexKeyとユニークIDを含むQRコードを自動的に埋め込みます。
- A) フォルダ一括処理:
Synapsen_Ersteller_main.pyを起動します。- 正規化済みのフォルダを読み込み、メタデータを編集します。
- 「統合PDFを生成」で月ごとのPDFを作成し、データベースに登録します。
- 補遺:
- メタデータの自動読み込みについて
Normalisiererで埋め込まれた PDFメタデータ(隠しJSON) を最優先で読み取ります。- (フォールバック) PDFの1ページ目にあるQRコードを読み取ります (
pyzbarが必要です)。 - (フォールバック) ファイル名 (
YYYYMMDD_hhmmss_...) から日付とタイトルが読み込まれます。 - PDF内容 (
key_rectの座標) から「Index Key」が自動で読み込まれます。- サイドノート (
..._Note.pdf) にも親のIndex Keyが自動で継承されます。
- サイドノート (
リスト保存 (CSV)/リスト読込 (CSV)について- 現在の編集状態(メタデータのみ)を中間ファイルとして保存/読み込みできます。
- この中間ファイルには、本文テキストは含まれません
- 本文テキストの抽出は「統合PDFを生成」を実行した時のみに行われます。
- 本文テキストが保存されるファイルは、マスターDBのみです。
- メタデータの自動読み込みについて
Synapsen_Nexus_main.pyを起動します。- 検索やフィルターでノートを探し、詳細やプレビューを確認します。
- 「グラフ表示」や「関連グラフ」で知識のつながりを視覚化します。
- 必要なノートを複数選択し、「リンクコピー」でMOCを作成したり、「エクスポート」でPDFとして書き出したりして活用します。
- 補遺:
- アプリは
config.iniで指定されたマスターDBを自動で読み込みます。 - PDFの自動検索:
- ノートに関連付けられた統合PDFや元ファイルは、
config.iniで設定したpdf_root_folderおよびpdf_archive_folder内(サブフォルダを含む)から自動的に検索・参照されます。 - これにより、ファイルの場所を(マスターDB直下のフォルダから)移動しても、設定されたフォルダ内であれば Nexusからそのまま閲覧可能です。
- 運用例:
- 今年度のファイルを「QUADERNO (クアデルノ)同期フォルダ (
root)」で管理し、過去の年度のファイルを「アーカイブフォルダ (archive)」内の年度別フォルダに移動して整理する、といった運用がスムーズに行えます。
- 今年度のファイルを「QUADERNO (クアデルノ)同期フォルダ (
- ノートに関連付けられた統合PDFや元ファイルは、
- 検索文字列の例 :
fulltext:Pythonikey:タスク AND (アイデア OR 思考)(date:>=20240101 AND date:<=20251231) AND (ikey:アイデア OR ikey:学習・情報収集)tag:SType_WebClip
- 「本文・メモ検索」とプレフィックス検索の関係:
fulltext:Pyやmemo:会議のようにプレフィックスを指定した場合、「本文・メモ検索」チェックボックスの状態に関わらず、常にDBの本文・メモが検索対象となります。Pythonのようにプレフィックスを指定しない場合、「本文・メモ検索」チェックボックスがONの時のみ、DBの本文・メモが検索対象に含まれます。
- 検索バーの横にある「
?」ボタンから、date:範囲指定などを含む高度な検索プレフィックスの詳細なヘルプを確認できます。
- アプリは
Synapsen Nexusを起動し、DBを読み込みます。- メニュー(またはボタン)から「Canvas」を起動します。
- Nexus上でノートを選択し、Canvasの「ノート追加」ボタンでカードとして配置します。
- 「付箋」ツールでアイデアを書き出し、配置します。色分けやタイトル入力も活用します。
- 「接続」ツールで関連するノート同士を結びつけ、ダブルクリックしてリンク情報をDBに保存します。
- 考えがまとまったら、付箋(または選択した複数の付箋)を右クリックして「PDFを作成」し、正規のノートファイルとして保存します。
- この時、Index Keyを選択し、自動でQRコードが埋め込まれます。
- Markdown記法が使用可能です(見出し、リストなど)。
- 自動で
SType_Stickyタグが付与されます。
- 保存されたPDF (
Nexus_Outputフォルダ内) はErstellerで取り込むことで、次回の統合PDFに含まれ、知識ベースの一部となります。
配布されているPDFテンプレート (DotLegalPad_Template-A4_Form.pdf など) は、リポジトリ内のPythonスクリプトによって生成されています。
Index Keyの選択肢(タグ)、フォント、レイアウトなどを変更したい場合は、以下の手順で自分専用のテンプレートを生成できます。
-
設定ファイルの編集:
PDF_Templates/DotLegalPad/DotLegalPad_Config.pyをテキストエディタで開きます。OPTIONS = [...]のリストを編集すると、PDFのプルダウンメニューに表示されるIndex Keyの選択肢を変更できます。FONT_PATHやCOLOR_LINEなどの他の設定も、好みに合わせて変更できます。
-
ライブラリの確認:
- テンプレートの生成には
PyMuPDFライブラリ が必要です。 poetry install --no-root --without dev(またはInstall_Poetry.bat) を実行済みであれば、必要なライブラリはすでにインストールされています。
- テンプレートの生成には
-
生成スクリプトの実行例:
- コマンドプロンプト(ターミナル)で
PDF_Templates/DotLegalPad/フォルダに移動します。 poetry run python Generate_DotLegalPad_Form_Template.pyを実行すると、フォーム付きのPDFが生成されます。poetry run python Generate_DotLegalPad.pyを実行すると、フォーム無しの(ページ追加用)PDFが生成されます。
- コマンドプロンプト(ターミナル)で
重要:
DotLegalPad_Config.pyのOPTIONSを変更した場合、Synapsen本体のconfig.iniの[CommonplaceKeys]セクションにあるoptions = ...の内容も、必ず一致させてください。
💡 生成されるテンプレートの仕様について (SkipNormalization)
生成スクリプト(
Generate_... .py)が出力するPDFには、メタデータ(キーワード)としてSynapsen:SkipNormalizationフラグが自動的に埋め込まれます。
- 効果:
Synapsen Normalisierer(およびWatchdog) は、このフラグを持つPDFを「正規化済み(サイズ調整不要)」と判断します。- メリット:
- これにより、統合時のリサイズ処理(再圧縮)がスキップされる為、ドット方眼や罫線、書き込みなどが元々の画質を維持したまま統合されます。
- リポジトリ内の生成スクリプト及び配布しているテンプレートの場合は、統合時に付与するヘッダー・フッター情報分のマージンは既に確保している為、はみ出して記載しない限り、記入内容と被る事はありません。
このセクションで変更する
.pyファイル(生成スクリプト)は、AGPL-3.0ライセンスの対象です。 もし、ユーザーが変更を加えた生成スクリプト自体を再配布・公開する場合は、AGPL-3.0の条項に従う必要があります。生成されるPDFファイルについて: スクリプトによって出力された
手持ちのPDFファイル(自作のリフィルや、好みのフォーマットのPDF)に、Synapsen用のIndex Key(QRコード)を埋め込むためのスクリプトです。 これにより、どんなPDFでも「自動分類機能付きテンプレート」として利用できるようになります。
使い方:
- テンプレートにしたいPDFファイルを、
Drop_PDF_Here.batにドラッグ&ドロップします。 - 元ファイルと同じ場所に
QR_Outputフォルダが作成され、config.iniに登録されている全ての Index Key 分のPDFが一括生成されます。 - 生成されたPDFには、正規化スキップ設定 (
Synapsen:SkipNormalization) と、Webクリップ同様のヘッダー情報が自動的に付与されます。
⚠️ 注意: 事前の正規化について このツールで生成されたテンプレートには「正規化スキップ」フラグが付与されるため、後からNormalisiererでサイズや余白を調整することができません。 そのため、元となるPDFが特殊なサイズであったり、余白を調整したい場合は、先にNormalisiererでA4/A5サイズに正規化してから、このツールを使用することを推奨します。
このプロジェクトのソースコードは、GNU Affero General Public License v3.0 (AGPL-3.0) の下でライセンスされています。
対象となるファイルは以下の通りです:
- すべての Pythonスクリプト (
.pyファイル) - Webサーバー機能で使用される HTMLテンプレートおよびスタイルシート (
Synapsen_Web内の.html,.cssなど)
これは、Synapsen の中核機能において、AGPL-3.0 ライセンスである PyMuPDF (fitz) ライブラリ を使用しているためです。
AGPL-3.0の条項に基づき、このライブラリを利用する本アプリケーション全体(Webインターフェースを含む)も同じライセンスに従います。
詳細は、同梱されている LICENSE ファイル 及び 動作環境・依存関係のPythonライブラリの項目を参照してください。
このリポジトリに含まれる以下のコンテンツは、ソースコードとは別に Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) の下でライセンスされています。
- 画像アセット: アプリケーションおよびWebサーバーで使用されるアイコン、ロゴ、画像ファイル(
assets/フォルダおよびstatic/内の画像)、および.gvdesignソースファイル。 - ドキュメント:
README.md、マニュアル、およびdocs/フォルダ内の文書。又、ドキュメントに使用されている画像。 - サンプル:
samples/フォルダ内の生成されたPDFファイル、および生成元のファイル(.mdサンプルファイル等)。
詳細は、同梱されている LICENSE-ASSETS.md ファイルを参照してください。
Releasesページ で配布されている .pdf テンプレートファイル(DotLegalPad_Template-A4_Form.pdf など)は、CC0 (パブリックドメイン) です。
これらのテンプレートは著作権による制限がないため、これらを使用して作成されたユーザーのノートの著作権は完全にユーザー自身に帰属します。 ユーザーはテンプレートのライセンスに縛られることなく、作成したノートを独占的に利用したり、あるいは配布・販売・共有したりと、自由に扱うことができます。
詳細は、同梱されている LISENSE-PDF.md ファイルを参照してください。
Synapsen Nexus が生成するグラフファイル(synapsen_graph.html 及びrelation_graph.html等)は、Synapsen プログラムの「出力」とみなされ、Synapsen 本体の AGPL-3.0 ライセンスは適用されません。
このHTMLファイルは、ユーザー自身のデータと、MITライセンスの pyvis (および vis.js) ライブラリで構成されています。
ファイル内に自動的に含まれるライブラリのライセンス表記を削除しない限り、ユーザーはこれを自由に利用・公開・配布することができます。
Synapsen が生成するMOC (.md)、統合PDF・CanvasエクスポートPDF (.pdf)、およびグラフ (.html) は、ユーザー自身のデータであり、Synapsen プログラムの「出力」です。
これらの出力ファイルには、視認性を高めるために assets/ フォルダ内のアイコン画像(またはその加工物)が埋め込まれる場合がありますが、ユーザーはこれらの出力ファイルを AGPL-3.0 や CC BY-SA 4.0 の条項を気にすることなく、自由に利用・公開・配布・販売することができます。
(出力ファイルに含まれるアセットの利用については、本ツールからの出力の一部として使用される場合に限り、著作権表示やライセンス継承を免除します。)
このソフトウェアは、多くの優れたオープンソースライブラリによって実現しています。
特に、GUI構築のための CustomTkinter、
データ操作のための pandas と NumPy、
PDF処理の中核を担う PyMuPDF と pypdf、
PDF生成エンジンである ReportLab、
OCR機能を実現する Pillow と pytesseract、
知識グラフの可視化を実現する NetworkX と Pyvis、
D&D機能を実現する tkinterdnd2、
メタデータQRコードの生成と読み取りを実現する qrcode と pyzbar、
Webクリップ機能とMarkdown変換を実現する Playwright および Pandoc、
Webサーバー機能を提供する Flask、
フォルダ監視による自動化を実現する watchdog、
依存関係管理を支える Poetry、
そして、堅牢なテスト環境を提供する pytest の開発者コミュニティに心から感謝申し上げます。
また、このプロジェクトの設計、コード作成、リファクタリング、およびドキュメント整備は、GoogleのAIである Gemini の支援を受けて行われました。