File size: 9,388 Bytes
179eccc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
# ν”„λ‘œμ νŠΈμ— κΈ°μ—¬ν•˜κΈ°

> [!CAUTION]
>
> ν˜„μž¬ ν”„λ‘œμ νŠΈ κ΄€λ¦¬μžλ“€μ€ μžλ™ν™”λœ λ¬Έμ„œ κ΅­μ œν™”λ₯Ό 연ꡬ μ€‘μž…λ‹ˆλ‹€. λ”°λΌμ„œ λ¬Έμ„œ κ΅­μ œν™”/λ²ˆμ—­κ³Ό κ΄€λ ¨λœ PR 은 **μ ˆλŒ€ ν—ˆμš©λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€**!
>
> λ¬Έμ„œ κ΅­μ œν™”/λ²ˆμ—­κ³Ό κ΄€λ ¨λœ PR 을 μ œμΆœν•˜μ§€ λ§ˆμ„Έμš”!

이 ν”„λ‘œμ νŠΈμ— 관심을 κ°€μ Έ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€! κΈ°μ—¬λ₯Ό μ‹œμž‘ν•˜κΈ° 전에, μ›ν™œν•œ κΈ°μ—¬λ₯Ό μœ„ν•΄ λ‹€μŒ κ°€μ΄λ“œλΌμΈμ„ κΌ­ 읽어 μ£Όμ‹œκΈ° λ°”λžλ‹ˆλ‹€.

## ν—ˆμš©λ˜μ§€ μ•ŠλŠ” κΈ°μ—¬ μœ ν˜•

1. λ¬Έμ„œ κ΅­μ œν™”/λ²ˆμ—­
2. HTTP API λ“±κ³Ό 같은 핡심 인프라와 κ΄€λ ¨λœ κΈ°μ—¬
3. "도움 ν•„μš” μ—†μŒ"으둜 λͺ…μ‹œμ μœΌλ‘œ ν‘œμ‹œλœ 이슈 ([Byaidu/PDFMathTranslate](Byaidu/PDFMathTranslate) 및 [PDFMathTranslate-next/PDFMathTranslate-next](PDFMathTranslate-next/PDFMathTranslate-next) μ €μž₯μ†Œμ˜ 이슈 포함).
4. μœ μ§€ κ΄€λ¦¬μžκ°€ λΆ€μ μ ˆν•˜λ‹€κ³  νŒλ‹¨ν•œ 기타 κΈ°μ—¬.
5. λ¬Έμ„œ κΈ°μ—¬μ΄μ§€λ§Œ μ˜μ–΄ μ΄μ™Έμ˜ μ–Έμ–΄λ‘œ λ¬Έμ„œλ₯Ό λ³€κ²½ν•˜λŠ” 경우.
6. `PDF` 파일 μˆ˜μ •μ΄ ν•„μš”ν•œ PR.
7. `pdf2zh_next/gui_translation.yaml` νŒŒμΌμ„ μˆ˜μ •ν•˜λŠ” PR.

μœ„μ™€ κ΄€λ ¨λœ μœ ν˜•μ˜ PR 은 μ œμΆœν•˜μ§€ λ§ˆμ‹­μ‹œμ˜€.

> [!NOTE]
>
> λ¬Έμ„œμ— κΈ°μ—¬ν•˜κ³  μ‹Άλ‹€λ©΄ **λ¬Έμ„œμ˜ μ˜μ–΄ λ²„μ „λ§Œ μˆ˜μ •ν•΄ μ£Όμ„Έμš”**. λ‹€λ₯Έ μ–Έμ–΄ 버전은 κΈ°μ—¬μžλ“€μ΄ 직접 λ²ˆμ—­ν•©λ‹ˆλ‹€.

- [ ] Adding new translation services.
- [ ] Adding new features.
- [ ] Adding new dependencies.

## PRs that are welcome to submit directly
- [ ] Fix typo.
- [ ] Fix grammatical errors.
- [ ] Fix broken links.
- [ ] Fix incorrect translation.
- [ ] Add missing translation.
- [ ] Improve translation quality.
- [ ] Add new language.

---

### OUTPUT

## μœ μ§€ κ΄€λ¦¬μžμ™€ 이슈λ₯Ό 톡해 사전 λ…Όμ˜κ°€ ꢌμž₯λ˜λŠ” PR
- [ ] μƒˆλ‘œμš΄ λ²ˆμ—­ μ„œλΉ„μŠ€ μΆ”κ°€.
- [ ] μƒˆλ‘œμš΄ κΈ°λŠ₯ μΆ”κ°€.
- [ ] μƒˆλ‘œμš΄ μ˜μ‘΄μ„± μΆ”κ°€.

## 직접 제좜이 ꢌμž₯λ˜λŠ” PR
- [ ] μ˜€νƒ€ μˆ˜μ •.
- [ ] 문법 였λ₯˜ μˆ˜μ •.
- [ ] κΉ¨μ§„ 링크 μˆ˜μ •.
- [ ] 잘λͺ»λœ λ²ˆμ—­ μˆ˜μ •.
- [ ] λˆ„λ½λœ λ²ˆμ—­ μΆ”κ°€.
- [ ] λ²ˆμ—­ ν’ˆμ§ˆ ν–₯상.
- [ ] μƒˆλ‘œμš΄ μ–Έμ–΄ μΆ”κ°€.

- Adding new translation services.
- Adding new features.
- Adding new dependencies.

For the following types of PRs, you are welcome to submit directly:
- Fix typo.
- Fix grammatical errors.
- Fix broken links.
- Fix incorrect translation.
- Add missing translation.
- Improve translation quality.
- Add new language.

---

### OUTPUT

λ‹€μŒ μœ ν˜•μ˜ PR 은 제좜 전에 μœ μ§€ κ΄€λ¦¬μžμ™€ λ¨Όμ € λ…Όμ˜ν•˜λŠ” 것이 ꢌμž₯λ©λ‹ˆλ‹€:
- μƒˆλ‘œμš΄ λ²ˆμ—­ μ„œλΉ„μŠ€ μΆ”κ°€.
- μƒˆλ‘œμš΄ κΈ°λŠ₯ μΆ”κ°€.
- μƒˆλ‘œμš΄ μ˜μ‘΄μ„± μΆ”κ°€.

λ‹€μŒ μœ ν˜•μ˜ PR 은 직접 μ œμΆœν•΄ 주셔도 μ’‹μŠ΅λ‹ˆλ‹€:
- μ˜€νƒ€ μˆ˜μ •.
- 문법 였λ₯˜ μˆ˜μ •.
- κΉ¨μ§„ 링크 μˆ˜μ •.
- 잘λͺ»λœ λ²ˆμ—­ μˆ˜μ •.
- λˆ„λ½λœ λ²ˆμ—­ μΆ”κ°€.
- λ²ˆμ—­ ν’ˆμ§ˆ ν–₯상.
- μƒˆλ‘œμš΄ μ–Έμ–΄ μΆ”κ°€.

2. PRs related to adding new dependencies. (This project aims to maintain minimal dependencies).
3. PRs related to adding new translation services. (Translation services require extensive testing and maintenance, and we currently do not plan to add new ones).
4. PRs related to adding new features. (This project is currently in maintenance mode and does not plan to add new features).

---

### OUTPUT

1. 닀쀑 μ‚¬μš©μž 곡유 κΈ°λŠ₯κ³Ό κ΄€λ ¨λœ PR. (이 ν”„λ‘œμ νŠΈλŠ” 주둜 단일 μ‚¬μš©μž μ‚¬μš©μ„ μœ„ν•΄ μ„€κ³„λ˜μ—ˆμœΌλ©°, 포괄적인 닀쀑 μ‚¬μš©μž μ‹œμŠ€ν…œμ„ λ„μž…ν•  κ³„νšμ΄ μ—†μŠ΅λ‹ˆλ‹€).
2. μƒˆλ‘œμš΄ μ˜μ‘΄μ„± 좔가와 κ΄€λ ¨λœ PR. (이 ν”„λ‘œμ νŠΈλŠ” μ΅œμ†Œν•œμ˜ μ˜μ‘΄μ„±μ„ μœ μ§€ν•˜λŠ” 것을 λͺ©ν‘œλ‘œ ν•©λ‹ˆλ‹€).
3. μƒˆλ‘œμš΄ λ²ˆμ—­ μ„œλΉ„μŠ€ 좔가와 κ΄€λ ¨λœ PR. (λ²ˆμ—­ μ„œλΉ„μŠ€λŠ” κ΄‘λ²”μœ„ν•œ ν…ŒμŠ€νŠΈμ™€ μœ μ§€λ³΄μˆ˜κ°€ ν•„μš”ν•˜λ©°, ν˜„μž¬ μƒˆλ‘œμš΄ μ„œλΉ„μŠ€λ₯Ό μΆ”κ°€ν•  κ³„νšμ΄ μ—†μŠ΅λ‹ˆλ‹€).
4. μƒˆλ‘œμš΄ κΈ°λŠ₯ 좔가와 κ΄€λ ¨λœ PR. (이 ν”„λ‘œμ νŠΈλŠ” ν˜„μž¬ μœ μ§€λ³΄μˆ˜ λͺ¨λ“œμ΄λ©°, μƒˆλ‘œμš΄ κΈ°λŠ₯을 μΆ”κ°€ν•  κ³„νšμ΄ μ—†μŠ΅λ‹ˆλ‹€).

## κΈ°μ—¬ ν”„λ‘œμ„ΈμŠ€

1. 이 μ €μž₯μ†Œλ₯Ό ν¬ν¬ν•˜κ³  λ‘œμ»¬μ— ν΄λ‘ ν•©λ‹ˆλ‹€.
2. μƒˆλ‘œμš΄ 브랜치λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€: `git checkout -b feature/<feature-name>`.
3. κ°œλ°œμ„ μ§„ν–‰ν•˜κ³  μ½”λ“œκ°€ μš”κ΅¬ 사항을 μΆ©μ‘±ν•˜λŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.
4. μ½”λ“œλ₯Ό μ»€λ°‹ν•©λ‹ˆλ‹€:
   ```bash
   git add .
   git commit -m "<semantic commit message>"
   ```
5. μžμ‹ μ˜ μ €μž₯μ†Œμ— ν‘Έμ‹œν•©λ‹ˆλ‹€: `git push origin feature/<feature-name>`.
6. GitHub μ—μ„œ PR 을 μƒμ„±ν•˜κ³  μƒμ„Έν•œ μ„€λͺ…을 μ œκ³΅ν•œ ν›„ [@awwaawwa](https://github.com/awwaawwa) μ—κ²Œ 리뷰λ₯Ό μš”μ²­ν•©λ‹ˆλ‹€.
7. λͺ¨λ“  μžλ™ν™”λœ 검사가 ν†΅κ³Όλ˜λŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.

> [!TIP]
>
> 개발이 μ™„μ „νžˆ μ™„λ£Œλ  λ•ŒκΉŒμ§€ 기닀릴 ν•„μš” 없이 PR 을 생성할 수 μžˆμŠ΅λ‹ˆλ‹€. 일찍 μƒμ„±ν•˜λ©΄ κ΅¬ν˜„μ„ κ²€ν† ν•˜κ³  μ œμ•ˆμ„ μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
>
> μ†ŒμŠ€ μ½”λ“œ λ˜λŠ” κ΄€λ ¨ 사항에 λŒ€ν•œ 질문이 있으면 aw@funstory.ai 둜 λ©”μΈν…Œμ΄λ„ˆμ—κ²Œ λ¬Έμ˜ν•˜μ„Έμš”.
>
> 2.0 λ²„μ „μ˜ λ¦¬μ†ŒμŠ€ νŒŒμΌμ€ [BabelDOC](https://github.com/funstory-ai/BabelDOC) 와 κ³΅μœ λ©λ‹ˆλ‹€. κ΄€λ ¨ λ¦¬μ†ŒμŠ€λ₯Ό λ‹€μš΄λ‘œλ“œν•˜λŠ” μ½”λ“œλŠ” BabelDOC 에 μžˆμŠ΅λ‹ˆλ‹€. μƒˆλ‘œμš΄ λ¦¬μ†ŒμŠ€ νŒŒμΌμ„ μΆ”κ°€ν•˜λ €λ©΄ BabelDOC λ©”μΈν…Œμ΄λ„ˆμ—κ²Œ aw@funstory.ai 둜 λ¬Έμ˜ν•˜μ„Έμš”.

## κΈ°λ³Έ μš”κ΅¬ 사항

<h4 id="sop">1. μ›Œν¬ν”Œλ‘œμš°</h4>

   - `main` λΈŒλžœμΉ˜μ—μ„œ 포크λ₯Ό μƒμ„±ν•˜κ³  포크된 λΈŒλžœμΉ˜μ—μ„œ κ°œλ°œμ„ μ§„ν–‰ν•΄ μ£Όμ„Έμš”.
   - Pull Request(PR) λ₯Ό μ œμΆœν•  λ•Œ λ³€κ²½ 사항에 λŒ€ν•œ μƒμ„Έν•œ μ„€λͺ…을 μ œκ³΅ν•΄ μ£Όμ„Έμš”.
   - PR 이 μžλ™ν™”λœ 검사λ₯Ό ν†΅κ³Όν•˜μ§€ λͺ»ν•˜λŠ” 경우 (`checks failed` 및 빨간색 μ‹­μžκ°€λ‘œ ν‘œμ‹œλ¨), ν•΄λ‹Ή `details` λ₯Ό ν™•μΈν•˜κ³  μ œμΆœλ¬Όμ„ μˆ˜μ •ν•˜μ—¬ μƒˆλ‘œμš΄ PR 이 λͺ¨λ“  검사λ₯Ό 톡과할 수 μžˆλ„λ‘ ν•΄ μ£Όμ„Έμš”.


<h4 id="dev&test">2. 개발 및 ν…ŒμŠ€νŠΈ</h4>

   - 개발 및 ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•΄ `pip install -e .` λͺ…령을 μ‚¬μš©ν•˜μ„Έμš”.


<h4 id="format">3. μ½”λ“œ ν¬λ§·νŒ…</h4>

   - `pre-commit` 도ꡬλ₯Ό κ΅¬μ„±ν•˜κ³  μ½”λ“œ μ„œμ‹μ„ μœ„ν•΄ `black` κ³Ό `flake8` 을 ν™œμ„±ν™”ν•˜μ„Έμš”.


<h4 id="requpdate">4. 쒅속성 μ—…λ°μ΄νŠΈ</h4>

   - μƒˆλ‘œμš΄ 쒅속성을 λ„μž…ν•˜λŠ” 경우, `pyproject.toml` 파일의 쒅속성 λͺ©λ‘μ„ μ μ‹œμ— μ—…λ°μ΄νŠΈν•΄ μ£Όμ„Έμš”.


<h4 id="docupdate">5. λ¬Έμ„œ μ—…λ°μ΄νŠΈ</h4>

   - μƒˆλ‘œμš΄ λͺ…령쀄 μ˜΅μ…˜μ„ μΆ”κ°€ν•˜λŠ” 경우, `README.md` 파일의 λͺ¨λ“  μ–Έμ–΄ λ²„μ „μ—μ„œ λͺ…령쀄 μ˜΅μ…˜ λͺ©λ‘μ„ ν•΄λ‹Ή 사항에 맞게 μ—…λ°μ΄νŠΈν•΄ μ£Όμ„Έμš”.


<h4 id="commitmsg">6. 컀밋 λ©”μ‹œμ§€</h4>

   - [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) λ₯Ό μ‚¬μš©ν•˜μ„Έμš”. 예: `feat(translator): add openai`.


<h4 id="μ½”λ”©μŠ€νƒ€μΌ">7. μ½”λ”© μŠ€νƒ€μΌ</h4>

   - μ œμΆœν•œ μ½”λ“œκ°€ 기본적인 μ½”λ”© μŠ€νƒ€μΌ ν‘œμ€€μ„ μ€€μˆ˜ν•˜λŠ”μ§€ ν™•μΈν•˜μ„Έμš”.
   - λ³€μˆ˜ μ΄λ¦„μ—λŠ” snake_case λ˜λŠ” camelCase λ₯Ό μ‚¬μš©ν•˜μ„Έμš”.


<h4 id="doctypo">8. λ¬Έμ„œ μ„œμ‹</h4>

   - `README.md` ν¬λ§·νŒ…μ€ [쀑ꡭ어 μΉ΄ν”ΌλΌμ΄νŒ… κ°€μ΄λ“œλΌμΈ](https://github.com/sparanoid/chinese-copywriting-guidelines) 을 λ”°λ₯΄μ„Έμš”.
   - μ˜μ–΄ 및 쀑ꡭ어 λ¬Έμ„œλŠ” 항상 μ΅œμ‹  μƒνƒœλ‘œ μœ μ§€ν•˜κ³ , λ‹€λ₯Έ μ–Έμ–΄ λ¬Έμ„œ μ—…λ°μ΄νŠΈλŠ” 선택 μ‚¬ν•­μž…λ‹ˆλ‹€.

## λ²ˆμ—­ μ—”μ§„ μΆ”κ°€ν•˜κΈ°

1. `pdf2zh/config/translate_engine_model.py` νŒŒμΌμ— μƒˆλ‘œμš΄ λ²ˆμ—­κΈ° ꡬ성 클래슀λ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€.
2. λ™μΌν•œ 파일의 `TRANSLATION_ENGINE_SETTING_TYPE` νƒ€μž… 별칭에 μƒˆλ‘œμš΄ λ²ˆμ—­κΈ° ꡬ성 클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€.
3. `pdf2zh/translator/translator_impl` 폴더에 μƒˆλ‘œμš΄ λ²ˆμ—­κΈ° κ΅¬ν˜„ 클래슀λ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€.

> [!NOTE]
>
> 이 ν”„λ‘œμ νŠΈλŠ” RPS(μ΄ˆλ‹Ή μš”μ²­ 수) κ°€ 4 미만인 λ²ˆμ—­ 엔진을 지원할 μ˜λ„κ°€ μ—†μŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ 엔진에 λŒ€ν•œ 지원을 μš”μ²­ν•˜μ§€ λ§ˆμ‹­μ‹œμ˜€.
> λ‹€μŒ μœ ν˜•μ˜ λ²ˆμ—­κΈ°λ„ ν†΅ν•©λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€:
> - μ—…μŠ€νŠΈλ¦Ό μœ μ§€λ³΄μˆ˜μžμ— μ˜ν•΄ μ€‘λ‹¨λœ λ²ˆμ—­κΈ° (예: deeplx)
> - 큰 μ˜μ‘΄μ„±μ΄ μžˆλŠ” λ²ˆμ—­κΈ° (예: pytorch 에 μ˜μ‘΄ν•˜λŠ” 경우)
> - λΆˆμ•ˆμ •ν•œ λ²ˆμ—­κΈ°
> - λ¦¬λ²„μŠ€ μ—”μ§€λ‹ˆμ–΄λ§ API 기반 λ²ˆμ—­κΈ°
>
> νŠΉμ • λ²ˆμ—­κΈ°κ°€ μš”κ΅¬ 사항을 μΆ©μ‘±ν•˜λŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•Šμ€ 경우, 이슈λ₯Ό 보내 μœ μ§€λ³΄μˆ˜μžμ™€ λ…Όμ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

## ν”„λ‘œμ νŠΈ ꡬ쑰

- **config 폴더**: ꡬ성 μ‹œμŠ€ν…œ.
- **translator 폴더**: λ²ˆμ—­κΈ° κ΄€λ ¨ κ΅¬ν˜„.
- **gui.py**: GUI μΈν„°νŽ˜μ΄μŠ€λ₯Ό 제곡.
- **const.py**: 일뢀 μƒμˆ˜.
- **main.py**: λͺ…령쀄 도ꡬλ₯Ό 제곡.
- **high_level.py**: BabelDOC 기반의 κ³ μˆ˜μ€€ μΈν„°νŽ˜μ΄μŠ€.
- **http_api.py**: HTTP API λ₯Ό 제곡 (μ‹œμž‘λ˜μ§€ μ•ŠμŒ).

AI μ—κ²Œ ν”„λ‘œμ νŠΈ 이해 μš”μ²­: [DeepWiki](https://deepwiki.com/PDFMathTranslate-next/PDFMathTranslate-next)

## λ¬Έμ˜ν•˜κΈ°

질문이 μžˆμœΌμ‹œλ©΄ Issue λ₯Ό 톡해 ν”Όλ“œλ°±μ„ μ œμΆœν•˜κ±°λ‚˜ Telegram 그룹에 μ°Έμ—¬ν•΄ μ£Όμ„Έμš”. κΈ°μ—¬ν•΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€!

> [!TIP]
>
> [Immersive Translate](https://immersivetranslate.com) λŠ” 이 ν”„λ‘œμ νŠΈμ— ν™œλ°œνžˆ κΈ°μ—¬ν•˜λŠ” 뢄듀을 μœ„ν•΄ λ§€μ›” Pro 멀버십 μ½”λ“œλ₯Ό ν›„μ›ν•©λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ λ‹€μŒμ„ μ°Έμ‘°ν•˜μ„Έμš”: [BabelDOC/PDFMathTranslate κΈ°μ—¬μž 보상 κ·œμΉ™](https://funstory-ai.github.io/BabelDOC/CONTRIBUTOR_REWARD/)

<div align="right"> 
<h6><small>이 νŽ˜μ΄μ§€μ˜ 일뢀 λ‚΄μš©μ€ GPT 에 μ˜ν•΄ λ²ˆμ—­λ˜μ—ˆμœΌλ©° 였λ₯˜κ°€ 포함될 수 μžˆμŠ΅λ‹ˆλ‹€.</small></h6>