Spaces:
Running
Running
Update backend/lens_core.py
Browse files- backend/lens_core.py +0 -34
backend/lens_core.py
CHANGED
|
@@ -225,33 +225,6 @@ AI_LANG_STYLE = {
|
|
| 225 |
),
|
| 226 |
}
|
| 227 |
|
| 228 |
-
AI_PROMPT_USER_BY_LANG = {
|
| 229 |
-
"th": """
|
| 230 |
-
เป้าหมายภาษา: ไทย
|
| 231 |
-
แปลข้อความ OCR ในมังงะเป็นภาษาไทยธรรมชาติแบบบทสนทนา
|
| 232 |
-
คงน้ำเสียง/อารมณ์ให้เหมาะกับบริบท
|
| 233 |
-
สั้น กระชับ อ่านลื่น ห้ามใส่คำอธิบายหรือบรรยายเพิ่ม
|
| 234 |
-
คงชื่อเฉพาะ/ศัพท์เฉพาะให้สม่ำเสมอ และส่งออกเป็นข้อความไทยเท่านั้น
|
| 235 |
-
""".strip(),
|
| 236 |
-
"en": """Style preferences:
|
| 237 |
-
- Keep English dialogue concise and conversational.
|
| 238 |
-
- Keep lines short for speech bubbles.
|
| 239 |
-
- Keep names and recurring terms consistent.
|
| 240 |
-
- Keep SFX short; avoid very long repeated characters.
|
| 241 |
-
""".strip(),
|
| 242 |
-
"ja": """Style preferences:
|
| 243 |
-
- Keep Japanese dialogue concise and natural for manga.
|
| 244 |
-
- Keep lines short for speech bubbles.
|
| 245 |
-
- Keep names and recurring terms consistent.
|
| 246 |
-
- Keep SFX short; avoid very long repeated characters.
|
| 247 |
-
""".strip(),
|
| 248 |
-
"default": """Style preferences:
|
| 249 |
-
- Keep dialogue concise, spoken, and faithful to tone.
|
| 250 |
-
- Keep lines short for speech bubbles.
|
| 251 |
-
- Keep names and recurring terms consistent.
|
| 252 |
-
- Keep SFX short; avoid very long repeated characters.
|
| 253 |
-
""".strip(),
|
| 254 |
-
}
|
| 255 |
|
| 256 |
AI_PROMPT_RESPONSE_CONTRACT_JSON = (
|
| 257 |
"Return ONLY valid JSON (no markdown, no extra text).\n"
|
|
@@ -289,9 +262,6 @@ _FONT_PAIR_CACHE = {}
|
|
| 289 |
_TP_HTML_EPS_PX = 0.0
|
| 290 |
ZWSP = "\u200b"
|
| 291 |
|
| 292 |
-
def ai_prompt_user_default(lang: str, model: str = "auto") -> str:
|
| 293 |
-
l = _normalize_lang(lang)
|
| 294 |
-
return (AI_PROMPT_USER_BY_LANG.get(l) or AI_PROMPT_USER_BY_LANG.get("default") or "").strip()
|
| 295 |
|
| 296 |
def _active_ai_contract() -> str:
|
| 297 |
return AI_PROMPT_RESPONSE_CONTRACT_JSON if DO_AI_JSON else AI_PROMPT_RESPONSE_CONTRACT_TEXT
|
|
@@ -411,7 +381,6 @@ def _build_ai_prompt_packet(target_lang: str, original_text_full: str):
|
|
| 411 |
data_text = data_template.format(input_json=input_json)
|
| 412 |
|
| 413 |
style = AI_LANG_STYLE.get(lang) or AI_LANG_STYLE.get("default") or ""
|
| 414 |
-
editable = (ai_prompt_user_default(lang) or "").strip()
|
| 415 |
|
| 416 |
system_parts = [AI_PROMPT_SYSTEM_BASE]
|
| 417 |
if style:
|
|
@@ -420,8 +389,6 @@ def _build_ai_prompt_packet(target_lang: str, original_text_full: str):
|
|
| 420 |
system_text = "\n\n".join([p for p in system_parts if p])
|
| 421 |
|
| 422 |
user_parts = []
|
| 423 |
-
if editable:
|
| 424 |
-
user_parts.append(editable)
|
| 425 |
user_parts.append(data_text)
|
| 426 |
return system_text, user_parts
|
| 427 |
|
|
@@ -1504,7 +1471,6 @@ def ai_translate_original_text(original_text_full: str, target_lang: str):
|
|
| 1504 |
json.dumps(
|
| 1505 |
{
|
| 1506 |
"sys": AI_PROMPT_SYSTEM_BASE,
|
| 1507 |
-
"edit": AI_PROMPT_USER_BY_LANG,
|
| 1508 |
"contract": _active_ai_contract(),
|
| 1509 |
"data": _active_ai_data_template(),
|
| 1510 |
"style": AI_LANG_STYLE.get(lang) or AI_LANG_STYLE.get("default") or "",
|
|
|
|
| 225 |
),
|
| 226 |
}
|
| 227 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 228 |
|
| 229 |
AI_PROMPT_RESPONSE_CONTRACT_JSON = (
|
| 230 |
"Return ONLY valid JSON (no markdown, no extra text).\n"
|
|
|
|
| 262 |
_TP_HTML_EPS_PX = 0.0
|
| 263 |
ZWSP = "\u200b"
|
| 264 |
|
|
|
|
|
|
|
|
|
|
| 265 |
|
| 266 |
def _active_ai_contract() -> str:
|
| 267 |
return AI_PROMPT_RESPONSE_CONTRACT_JSON if DO_AI_JSON else AI_PROMPT_RESPONSE_CONTRACT_TEXT
|
|
|
|
| 381 |
data_text = data_template.format(input_json=input_json)
|
| 382 |
|
| 383 |
style = AI_LANG_STYLE.get(lang) or AI_LANG_STYLE.get("default") or ""
|
|
|
|
| 384 |
|
| 385 |
system_parts = [AI_PROMPT_SYSTEM_BASE]
|
| 386 |
if style:
|
|
|
|
| 389 |
system_text = "\n\n".join([p for p in system_parts if p])
|
| 390 |
|
| 391 |
user_parts = []
|
|
|
|
|
|
|
| 392 |
user_parts.append(data_text)
|
| 393 |
return system_text, user_parts
|
| 394 |
|
|
|
|
| 1471 |
json.dumps(
|
| 1472 |
{
|
| 1473 |
"sys": AI_PROMPT_SYSTEM_BASE,
|
|
|
|
| 1474 |
"contract": _active_ai_contract(),
|
| 1475 |
"data": _active_ai_data_template(),
|
| 1476 |
"style": AI_LANG_STYLE.get(lang) or AI_LANG_STYLE.get("default") or "",
|