Spaces:
Sleeping
Sleeping
get request
Browse files
main.py
CHANGED
@@ -7,7 +7,7 @@ from typing import List
|
|
7 |
|
8 |
import cv2
|
9 |
import numpy as np
|
10 |
-
from fastapi import FastAPI, HTTPException, UploadFile
|
11 |
from fastapi.middleware.cors import CORSMiddleware
|
12 |
from fastapi.responses import JSONResponse
|
13 |
from PIL import Image
|
@@ -74,7 +74,8 @@ def load_dependencies():
|
|
74 |
|
75 |
|
76 |
@app.post("/analyze/")
|
77 |
-
async def analyze_image(
|
|
|
78 |
progress = print
|
79 |
global trocr_pipeline
|
80 |
# モデルが読み込まれているか確認
|
@@ -86,7 +87,7 @@ async def analyze_image(image_binaries: List[UploadFile]):
|
|
86 |
return
|
87 |
|
88 |
all_results = []
|
89 |
-
num_total_files = len(
|
90 |
|
91 |
progress(0, desc="テンプレート画像読み込み中...")
|
92 |
suit_templates = load_suit_templates(SUIT_TEMPLATE_PATH)
|
@@ -100,12 +101,12 @@ async def analyze_image(image_binaries: List[UploadFile]):
|
|
100 |
processed_files_info = []
|
101 |
# image_objects = {}
|
102 |
|
103 |
-
for i, image_path in enumerate(
|
104 |
progress(
|
105 |
(i + 1) / num_total_files * 0.15,
|
106 |
desc="ステージ1/3: 文字候補を検出中...",
|
107 |
)
|
108 |
-
filename = os.path.basename(image_path)
|
109 |
progress(
|
110 |
(i + 1) / num_total_files * 0.3,
|
111 |
f"分析中 ({i+1}/{num_total_files}): {filename}",
|
@@ -113,12 +114,12 @@ async def analyze_image(image_binaries: List[UploadFile]):
|
|
113 |
|
114 |
try:
|
115 |
# ファイルをバイナリモードで安全に読み込む
|
116 |
-
file_bytes = np.asarray(bytearray(image_path))
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
# NumPy配列(メモリ上のデータ)から画像をデコード
|
123 |
image = cv2.imdecode(file_bytes, cv2.IMREAD_COLOR)
|
124 |
|
@@ -223,7 +224,7 @@ async def analyze_image(image_binaries: List[UploadFile]):
|
|
223 |
# else:
|
224 |
# export_update = gr.update(interactive=False)
|
225 |
final_result = all_results[0]["hands"]
|
226 |
-
filenames = [os.path.basename(p) for p in
|
227 |
# dropdown_update = gr.update(
|
228 |
# choices=filenames, value=filenames[0], interactive=True, open=True
|
229 |
# )
|
|
|
7 |
|
8 |
import cv2
|
9 |
import numpy as np
|
10 |
+
from fastapi import FastAPI, HTTPException, Request, UploadFile
|
11 |
from fastapi.middleware.cors import CORSMiddleware
|
12 |
from fastapi.responses import JSONResponse
|
13 |
from PIL import Image
|
|
|
74 |
|
75 |
|
76 |
@app.post("/analyze/")
|
77 |
+
async def analyze_image(request: Request):
|
78 |
+
image_paths = request["image_binaries"]
|
79 |
progress = print
|
80 |
global trocr_pipeline
|
81 |
# モデルが読み込まれているか確認
|
|
|
87 |
return
|
88 |
|
89 |
all_results = []
|
90 |
+
num_total_files = len(image_paths)
|
91 |
|
92 |
progress(0, desc="テンプレート画像読み込み中...")
|
93 |
suit_templates = load_suit_templates(SUIT_TEMPLATE_PATH)
|
|
|
101 |
processed_files_info = []
|
102 |
# image_objects = {}
|
103 |
|
104 |
+
for i, image_path in enumerate(image_paths):
|
105 |
progress(
|
106 |
(i + 1) / num_total_files * 0.15,
|
107 |
desc="ステージ1/3: 文字候補を検出中...",
|
108 |
)
|
109 |
+
filename = os.path.basename(image_path.filename)
|
110 |
progress(
|
111 |
(i + 1) / num_total_files * 0.3,
|
112 |
f"分析中 ({i+1}/{num_total_files}): {filename}",
|
|
|
114 |
|
115 |
try:
|
116 |
# ファイルをバイナリモードで安全に読み込む
|
117 |
+
# file_bytes = np.asarray(bytearray(image_path))
|
118 |
+
with open(image_path.filename, "rb") as f:
|
119 |
+
# バイトデータをNumPy配列に変換
|
120 |
+
file_bytes = np.asarray(
|
121 |
+
bytearray(f.read()), dtype=np.uint8
|
122 |
+
)
|
123 |
# NumPy配列(メモリ上のデータ)から画像をデコード
|
124 |
image = cv2.imdecode(file_bytes, cv2.IMREAD_COLOR)
|
125 |
|
|
|
224 |
# else:
|
225 |
# export_update = gr.update(interactive=False)
|
226 |
final_result = all_results[0]["hands"]
|
227 |
+
filenames = [os.path.basename(p) for p in image_paths]
|
228 |
# dropdown_update = gr.update(
|
229 |
# choices=filenames, value=filenames[0], interactive=True, open=True
|
230 |
# )
|