1- # Adding New Formats
1+ # 포맷 확장 가이드
22
3- 새 입력 포맷(Parser)이나 출력 포맷(Writer)을 추가하는 가이드 .
3+ 새 입력 포맷(Parser)이나 출력 포맷(Writer)을 추가하는 방법을 안내해요 .
44
55## 새 Parser 추가
66
77### 1. 파서 패키지 생성
88
9- ` src/ureca_document_parser/ ` 아래에 확장자명 디렉토리를 만들고 ` parser.py ` 를 생성한다 .
9+ ` src/ureca_document_parser/ ` 아래에 확장자명 디렉토리를 만들고 ` parser.py ` 를 생성하세요 .
1010
1111``` python
1212# src/ureca_document_parser/pdf/parser.py
@@ -46,7 +46,7 @@ class PdfParser:
4646 return parse_pdf(filepath)
4747```
4848
49- ` __init__.py ` 에서 re-export한다:
49+ ` __init__.py ` 에서 re-export해 주세요.
5050
5151``` python
5252# src/ureca_document_parser/pdf/__init__.py
@@ -55,14 +55,15 @@ from .parser import PdfParser
5555__all__ = [" PdfParser" ]
5656```
5757
58- 핵심 규칙:
59- - ` protocols.py ` 의 ` Parser ` Protocol 시그니처를 따른다
60- - ` models.py ` 의 ` Document ` 를 반환한다
61- - 선택적 의존성은 ** 함수 내부에서 lazy import** 한다
58+ 핵심 규칙은 다음과 같아요.
59+
60+ - ` protocols.py ` 의 ` Parser ` Protocol 시그니처를 따라야 해요
61+ - ` models.py ` 의 ` Document ` 를 반환해야 해요
62+ - 선택적 의존성은 ** 함수 내부에서 lazy import** 해야 해요
6263
6364### 2. 레지스트리에 등록
6465
65- ` src/ureca_document_parser/registry.py ` 의 ` _auto_register() ` 함수에 추가한다 .
66+ ` src/ureca_document_parser/registry.py ` 의 ` _auto_register() ` 함수에 추가하세요 .
6667
6768``` python
6869def _auto_register (registry : FormatRegistry) -> None :
@@ -75,7 +76,7 @@ def _auto_register(registry: FormatRegistry) -> None:
7576 pass # pymupdf 미설치 시 건너뜀
7677```
7778
78- ### 3. (선택) pyproject.toml에 optional dependency 추가
79+ ### 3. pyproject.toml에 optional dependency 추가 (선택)
7980
8081``` toml
8182[project .optional-dependencies ]
@@ -85,12 +86,14 @@ all = ["ureca_document_parser[pdf,ocr]"] # all에도 추가
8586
8687### 완료
8788
88- 이제 다음이 자동으로 동작한다:
89+ 이제 다음이 자동으로 동작해요.
8990
9091``` python
9192from ureca_document_parser import get_registry
9293doc = get_registry().parse(" document.pdf" )
94+ ```
9395
96+ ``` bash
9497# CLI
9598ureca_document_parser document.pdf -o output.md
9699```
@@ -101,7 +104,7 @@ ureca_document_parser document.pdf -o output.md
101104
102105### 1. Writer 모듈 생성
103106
104- ` src/ureca_document_parser/writers/ ` 아래에 새 파일을 만든다 .
107+ ` src/ureca_document_parser/writers/ ` 아래에 새 파일을 만드세요 .
105108
106109``` python
107110# src/ureca_document_parser/writers/html.py
@@ -164,10 +167,14 @@ except ImportError:
164167
165168### 완료
166169
170+ 이제 다음이 자동으로 동작해요.
171+
167172``` python
168173from ureca_document_parser import get_registry
169174md = get_registry().write(doc, " html" )
175+ ```
170176
177+ ``` bash
171178# CLI
172179ureca_document_parser document.hwp -f html -o output.html
173180```
@@ -176,10 +183,10 @@ ureca_document_parser document.hwp -f html -o output.html
176183
177184## 체크리스트
178185
179- 새 포맷 추가 시 확인 사항:
186+ 새 포맷을 추가할 때 다음 사항을 확인하세요.
180187
181- - [ ] Protocol 시그니처와 호환되는 클래스 작성
182- - [ ] ` models.py ` 의 ` Document ` 만 사용하여 입출력
183- - [ ] ` registry.py: _auto_register() ` 에 ` try/except ImportError ` 로 등록
184- - [ ] 선택적 의존성은 ` pyproject.toml ` 의 ` [project.optional-dependencies] ` 에 추가
185- - [ ] lazy import 사용 (함수 내부에서 import)
188+ - [ ] Protocol 시그니처와 호환되는 클래스를 작성했나요?
189+ - [ ] ` models.py ` 의 ` Document ` 만 사용해서 입출력하나요?
190+ - [ ] ` registry.py ` 의 ` _auto_register() ` 에 ` try/except ImportError ` 로 등록했나요?
191+ - [ ] 선택적 의존성을 ` pyproject.toml ` 의 ` [project.optional-dependencies] ` 에 추가했나요?
192+ - [ ] lazy import를 사용하고 있나요? (함수 내부에서 import)
0 commit comments