Corin1998 commited on
Commit
7864b3b
·
verified ·
1 Parent(s): 058ed07

Update pipelines/openai_ingest.py

Browse files
Files changed (1) hide show
  1. pipelines/openai_ingest.py +6 -17
pipelines/openai_ingest.py CHANGED
@@ -14,11 +14,9 @@ _client = None
14
  def _client_lazy():
15
  global _client
16
  if _client is None:
17
- key = os.environ.get("OPENAI_API_KEY") or os.environ.get("OPENAI_APIKEY") # ← フォールバック追加
18
  if not key:
19
- raise RuntimeError(
20
- "OPENAI_API_KEY (または OPENAI_APIKEY) が未設定です。Spaces > Settings > Variables and secrets で追加してください。"
21
- )
22
  _client = OpenAI(api_key=key)
23
  return _client
24
 
@@ -35,7 +33,6 @@ def _pdf_to_images(pdf_bytes: bytes, dpi: int = 220, max_pages: int = 10) -> Lis
35
 
36
 
37
  def extract_text_with_openai(payload: bytes, filename: str, filetype: str) -> str:
38
- """画像/PDFは画像化してVisionに渡す。テキストは整形依頼してきれいな本文を返す。"""
39
  client = _client_lazy()
40
 
41
  images: List[Image.Image] = []
@@ -43,11 +40,9 @@ def extract_text_with_openai(payload: bytes, filename: str, filetype: str) -> st
43
  images = _pdf_to_images(payload)
44
  elif filetype == "image":
45
  images = [Image.open(io.BytesIO(payload)).convert("RGB")]
46
- else: # txt/docxから来たテキストbytes
47
  text = payload.decode("utf-8", errors="ignore")
48
- prompt = (
49
- "以下は履歴書/職務経歴書の本文です。レイアウトノイズを除去し、見出しや箇条書きを維持しつつ読みやすいテキストに整形して返してください。"
50
- )
51
  resp = client.responses.create(
52
  model=MODEL_TEXT,
53
  input=[
@@ -61,15 +56,9 @@ def extract_text_with_openai(payload: bytes, filename: str, filetype: str) -> st
61
  {"type": "input_text", "text": "日本語の履歴書/職務経歴書の画像です。OCRして本文を日本語テキストで忠実に返してください。"}
62
  ]
63
  for img in images:
64
- content.append({
65
- "type": "input_image",
66
- "image_data": _img_to_base64(img),
67
- })
68
 
69
- resp = client.responses.create(
70
- model=MODEL_VISION,
71
- input=[{"role": "user", "content": content}],
72
- )
73
  return resp.output_text
74
 
75
 
 
14
  def _client_lazy():
15
  global _client
16
  if _client is None:
17
+ key = os.environ.get("OPENAI_API_KEY") or os.environ.get("OPENAI_APIKEY") # ← フォールバック
18
  if not key:
19
+ raise RuntimeError("OPENAI_API_KEY (または OPENAI_APIKEY) が未設定です。SpacesのSecretsに追加してください。")
 
 
20
  _client = OpenAI(api_key=key)
21
  return _client
22
 
 
33
 
34
 
35
  def extract_text_with_openai(payload: bytes, filename: str, filetype: str) -> str:
 
36
  client = _client_lazy()
37
 
38
  images: List[Image.Image] = []
 
40
  images = _pdf_to_images(payload)
41
  elif filetype == "image":
42
  images = [Image.open(io.BytesIO(payload)).convert("RGB")]
43
+ else:
44
  text = payload.decode("utf-8", errors="ignore")
45
+ prompt = "以下は履歴書/職務経歴書の本文です。レイアウトノイズを除去し、見出しや箇条書きを維持しつつ読みやすいテキストに整形して返してください。"
 
 
46
  resp = client.responses.create(
47
  model=MODEL_TEXT,
48
  input=[
 
56
  {"type": "input_text", "text": "日本語の履歴書/職務経歴書の画像です。OCRして本文を日本語テキストで忠実に返してください。"}
57
  ]
58
  for img in images:
59
+ content.append({"type": "input_image", "image_data": _img_to_base64(img)})
 
 
 
60
 
61
+ resp = client.responses.create(model=MODEL_VISION, input=[{"role": "user", "content": content}])
 
 
 
62
  return resp.output_text
63
 
64