지식 관리의 확장: Obsidian `이미지 OCR 자동화`

여자가 컴퓨터 화면 앞의 책상에 앉아 있습니다.

강의나 세미나에서 캡처한 이미지들의 내용을 나중에 다시 찾고 분석할 수 있다면, 매일의 학습이 더 의미 있게 쌓이지 않을까?”
라는 궁금증이 이번 프로젝트의 시작이었습니다.

이 생각은 2회차 Obsidian 오프라인 모임에서 더 구체화되었습니다.
옆자리에서 함께 참여한 선생님께서, 이미지 자료를 나중에 분석하거나 요약활용하고 싶다고 말씀하셨거든요.

처음에는 “이미지를 매번 AI로 분석”하는 방식을 고민했으나, 불필요한 리소스가 많이 들겠다고 판단했습니다.
그러다 “이미지를 저장하는 그 순간 텍스트를 미리 추출해둘까?” 하는 발상을 떠올렸고,
이를 구현하기 위해 Obsidian, CLOVA OCR, OpenAI를 결합한 시스템을 만들게 되었어요.



01. 소개

왜 이미지 OCR 자동화인가?

  • 캡처한 이미지 속 내용을 시간이 지난 뒤에 다시 찾으려면, “특정 키워드”가 필요합니다.

  • 그러나 이미지 상태에서는 검색이 어렵고, AI로 매번 해석하려면 비용과 시간이 큽니다.

  • 저장 순간에 OCR(글자 추출) + GPT(문단·섹션 정리) 작업을 마쳐두면, 나중에 Smart Composer(GPT 검색) 등으로 바로 검색할 수 있습니다.

  • 무엇보다 “이미지 + 추출 텍스트”가 함께 있으면, 맥락을 이해하고 재활용하기 쉬워집니다.



02. 진행 방법

어떤 도구를 썼나?


🔹 Local Images Plus (Obsidian 플러그인)

  • 이미지를 MD5로 최적화하고, 노트와 동일 경로( _resources/… )에서 관리해주는 플러그인입니다.

  • 노트를 삭제하면 해당 이미지도 함께 정리해주어, 노트·이미지 매핑이 자연스럽게 해결됩니다.

  • 용량이 큰 이미지도 Obsidian Vault 내에서 깔끔히 관리 가능하죠.

덕분에 저에게 필요한:

  1. 이미지 업로드

  2. Node.js가 OCR+GPT 처리

  3. 결과를 노트에 자동 삽입

이 흐름이 “_MD5”로 만들어지는 시점을 매번 잡아낼 수 있어, 자동화가 훨씬 쉬워졌습니다.



🔹 CLOVA OCR (API)

  • 네이버 클라우드의 OCR 서비스

  • API 문서

  • 1달에 100회 무료라는 점.

  • (x,y) 좌표까지 제공해 “섹션/리스트” 구분에 도움

한국어 웹 사이트의 스크린 샷
한국어 텍스트가있는 Google 검색 페이지의 스크린 샷
{
  "fields": [
    {
      "valueType": "ALL",
      "boundingPoly": {
        "vertices": [
          {
            "x": 65.0,
            "y": 31.0
          },
          {
            "x": 228.0,
            "y": 31.0
          },
          {
            "x": 228.0,
            "y": 70.0
          },
          {
            "x": 65.0,
            "y": 70.0
          }
        ]
      },
      "inferText": "피드백으로",
      "inferConfidence": 1.0,
      "type": "NORMAL",
      "lineBreak": false
    },
    ...
  ]
}



🔹 OpenAI (API)

  • OCR 텍스트(좌표 포함)를 문단·섹션·리스트로 정리

  • 한 줄 요약, 새 파일명(확장자 제외), 태그(폴더 경로) 생성

  • 한 번의 프롬프트로 JSON만 반환해 파싱을 간단하게



🔹 Node.js

  • Watch Folder에서 _MD5 이미지를 감시

  • CLOVA OCR 호출

  • OpenAI로 마크다운+요약+태그를 받아서

  • Obsidian 노트에 숨김(%% ... %%) 블록으로 내용 삽입

https://github.com/bytrustu/ocr-obsidian-auto


워크플로우

프�로세스의 다른 단계를 보여주는 다이어그램

  1. 이미지 캡처 후 Obsidian에 붙여넣기

  2. Local Images Plus가 이미지를 MD5로 최적화 & _resources/노트제목 폴더에 저장

  3. Node.js_MD5 파일 감지 → processImage() 실행

  4. CLOVA OCR(x,y,text) 좌표 데이터 추출

  5. OpenAI GPT에 한 번의 요청으로:

    • 섹션/리스트를 포함한 마크다운

    • 한 줄 요약

    • 폴더 경로를 해석해 만든 카테고리 태그

6. Smart Composer(GPT 검색) 으로 활용

한국 버전의 Google Chrome 스크린 샷



사용한 프롬프트 예시

아래 정보를 활용해, 네 가지 결과물을 JSON 형태로 한꺼번에 만들어주세요.

[입력 데이터]
1) OCR 텍스트:
"${ocrTexts}"

2) 노트 제목: "${noteTitle}"
3) 현재 파일명: "${oldFileName}"
4) 폴더 경로(최대 3뎁스): "${categoryPath}"

[요구사항]
1) improvedText:
   - 'OCR 텍스트'는 OCR로 추출된 (x,y,text) 리스트를 JSON으로 나타낸 것입니다.
   - 'OCR 텍스트'의 좌표를 파악해서 섹션, 리스트 개념 고려한 마크다운으로 만들어주세요 (###, - 등 사용)
   - 결과에는 좌표를 포함하지 않고, 텍스트만 포함되어야 합니다.
   - 코드 블록(\`\`\`)으로 감싸주세요
2) oneLineSummary:
   - improvedText를 한 문장으로 요약
3) newFileName:
   - "노트명_요약" 식의 한글 파일명 (확장자 제외, 50자 이하)
   - 공백/특수문자 -> '_' 치환
4) categoryTag:
   - categoryPath를 해석해 "#Study/세션" 등 태그 형태로
   - 없으면 ""

[출력 형식]
JSON만 정확히 반환(추가 말X).
{
  "improvedText": "...",
  "oneLineSummary": "...",
  "newFileName": "...",
  "categoryTag": "..."
}



03. 경험

🤔 느낀 점

  • 이미지도 검색 가능한 지식이 된다는 점이 검색 기능의 활용도를 크게 높여줍니다.

  • Local Images Plus 플러그인으로 이미지와 노트의 생명주기를 간단히 동기화할 수 있어, "이미지 삭제 누락" 걱정이 사라졌습니다.

  • 실제 옵시디언에서 바로 적용하고 활용할 수 있다는 점에서 흥미롭게 프로젝트를 진행했습니다.

⚠️ 시행착오

  • PPT, 표 구조 같은 복잡한 배치를 "(x, y) 정렬"만으로는 완벽히 복원하기 어려웠습니다.

🎯 앞으로 계획

  • 섹션 알고리즘: 표나 여러 열이 있는 슬라이드에서 y좌표만이 아닌 x좌표 범위도 세밀히 고려해, 복합 구조를 좀 더 정확히 복원

  • 플러그인: Node.js는 사용자 편의성 측면에서 활용도가 낮습니다. MVP 모델의 단계를 거쳐 플러그인 개발에 도전해보려고 합니다.

  • OCR 여부 판별: 모든 이미지에 OCR이 필요한 것은 아닙니다. OCR 적용 여부를 판단하는 필터 기능을 추가할 계획입니다.



04. 마무리

🔍 이번 사례를 통해, 이미지 자료도 텍스트처럼 검색·요약·재활용할 수 있게 만드는 과정을 살펴보았습니다.

  1. 🖼️ Local Images Plus가 이미지를 MD5로 처리해 관리성을 높였고,

  2. 📝 Node.js + CLOVA OCR로 텍스트를 추출,

  3. 🤖 GPT로 문단/리스트 형식의 마크다운, 요약, 태그, 파일명까지 한 번에 처리

  4. 📚 Obsidian 노트%% ... %% 형태로 OCR 결과를 삽입


덕분에, "캡처하는 순간" ✨ 자동으로 학습 데이터를 풍성하게 축적할 수 있었습니다.
앞으로도 이미지 구조를 더 세밀히 해석해, 이미지 기반 지식도 쉽고 빠르게 검색하고 재활용할 수 있는 Obsidian Workflow를 계속 발전시키고 싶습니다. 😊

6

👉 이 게시글도 읽어보세요