Deleted pytesseract logic
This commit is contained in:
@@ -48,7 +48,8 @@
|
|||||||
Docker Compose를 사용하여 프로젝트의 모든 서비스를 실행합니다.
|
Docker Compose를 사용하여 프로젝트의 모든 서비스를 실행합니다.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker-compose up -d --build
|
docker compose build ocr_perf_api
|
||||||
|
docker compose up -d --build
|
||||||
```
|
```
|
||||||
|
|
||||||
- API 서버는 `http://localhost:8892`에서 실행됩니다.
|
- API 서버는 `http://localhost:8892`에서 실행됩니다.
|
||||||
@@ -61,6 +62,7 @@ API 문서는 서버 실행 후 `http://localhost:8892/docs`에서 확인할 수
|
|||||||
### OCR 작업 요청
|
### OCR 작업 요청
|
||||||
|
|
||||||
- **POST /ocr/paddle**
|
- **POST /ocr/paddle**
|
||||||
|
|
||||||
- **설명**: Paddle OCR을 사용하여 OCR 작업을 요청합니다.
|
- **설명**: Paddle OCR을 사용하여 OCR 작업을 요청합니다.
|
||||||
- **요청 본문**: `multipart/form-data` 형식의 파일 목록
|
- **요청 본문**: `multipart/form-data` 형식의 파일 목록
|
||||||
- **응답**: 접수된 각 파일에 대한 작업 정보 (request_id, task_id 등)
|
- **응답**: 접수된 각 파일에 대한 작업 정보 (request_id, task_id 등)
|
||||||
|
|||||||
@@ -17,4 +17,5 @@ celery
|
|||||||
flower
|
flower
|
||||||
|
|
||||||
minio
|
minio
|
||||||
opencv-python-headlesspython-dotenv
|
opencv-python-headless
|
||||||
|
python-dotenv
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import cv2
|
|||||||
import docx # PyMuPDF, python-docx
|
import docx # PyMuPDF, python-docx
|
||||||
import fitz
|
import fitz
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import pytesseract
|
|
||||||
from paddleocr import PaddleOCR
|
from paddleocr import PaddleOCR
|
||||||
from pdf2image import convert_from_path
|
from pdf2image import convert_from_path
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
@@ -49,10 +48,6 @@ async def extract_text_from_file(file_path):
|
|||||||
)
|
)
|
||||||
raise ValueError("지원하지 않는 파일 형식입니다.")
|
raise ValueError("지원하지 않는 파일 형식입니다.")
|
||||||
|
|
||||||
# full_response, coord_response = await asyncio.to_thread(
|
|
||||||
# extract_text_ocr, images
|
|
||||||
# )
|
|
||||||
# return full_response, coord_response, "pytesseract"
|
|
||||||
full_response, coord_response = await asyncio.to_thread(
|
full_response, coord_response = await asyncio.to_thread(
|
||||||
extract_text_paddle_ocr, images
|
extract_text_paddle_ocr, images
|
||||||
)
|
)
|
||||||
@@ -107,56 +102,9 @@ def preprocess_image_for_ocr(pil_img, page_idx=None):
|
|||||||
img, None, fx=2, fy=2, interpolation=cv2.INTER_LINEAR
|
img, None, fx=2, fy=2, interpolation=cv2.INTER_LINEAR
|
||||||
) # 해상도 확대
|
) # 해상도 확대
|
||||||
|
|
||||||
# # ✅ 전처리 이미지 저장
|
|
||||||
# save_path = os.path.join("preprocess_image.png")
|
|
||||||
# logger.info(f"[UTILS-OCR] 전처리 이미지 저장: {save_path}")
|
|
||||||
# cv2.imwrite(save_path, img)
|
|
||||||
|
|
||||||
return Image.fromarray(img)
|
return Image.fromarray(img)
|
||||||
|
|
||||||
|
|
||||||
# ✅ OCR 수행 (좌표 포함)
|
|
||||||
def extract_text_ocr(images):
|
|
||||||
"""
|
|
||||||
tesseract를 사용하여 이미지에서 텍스트 추출 및 좌표 정보 반환
|
|
||||||
"""
|
|
||||||
all_texts = []
|
|
||||||
coord_response = []
|
|
||||||
|
|
||||||
for page_idx, img in enumerate(images):
|
|
||||||
logger.info(f"[UTILS-OCR] 페이지 {page_idx + 1} OCR로 텍스트 추출 중...")
|
|
||||||
pre_img = preprocess_image_for_ocr(img)
|
|
||||||
text = pytesseract.image_to_string(
|
|
||||||
pre_img, lang="kor+eng", config="--oem 3 --psm 6"
|
|
||||||
)
|
|
||||||
all_texts.append(text)
|
|
||||||
|
|
||||||
ocr_data = pytesseract.image_to_data(
|
|
||||||
pre_img,
|
|
||||||
output_type=pytesseract.Output.DICT,
|
|
||||||
lang="kor+eng",
|
|
||||||
config="--oem 3 --psm 6",
|
|
||||||
)
|
|
||||||
for i in range(len(ocr_data["text"])):
|
|
||||||
word = ocr_data["text"][i].strip()
|
|
||||||
if word == "":
|
|
||||||
continue
|
|
||||||
x, y, w, h = (
|
|
||||||
ocr_data["left"][i],
|
|
||||||
ocr_data["top"][i],
|
|
||||||
ocr_data["width"][i],
|
|
||||||
ocr_data["height"][i],
|
|
||||||
)
|
|
||||||
coord_response.append(
|
|
||||||
{"text": word, "coords": [x, y, x + w, y + h], "page": page_idx + 1}
|
|
||||||
)
|
|
||||||
|
|
||||||
logger.info(f"[UTILS-OCR] 페이지 {page_idx + 1} 텍스트 및 좌표 추출 완료")
|
|
||||||
|
|
||||||
full_response = "\n".join(all_texts)
|
|
||||||
return full_response, coord_response
|
|
||||||
|
|
||||||
|
|
||||||
def extract_text_paddle_ocr(images):
|
def extract_text_paddle_ocr(images):
|
||||||
"""
|
"""
|
||||||
PaddleOCR를 사용하여 이미지에서 텍스트 추출 및 좌표 정보 반환
|
PaddleOCR를 사용하여 이미지에서 텍스트 추출 및 좌표 정보 반환
|
||||||
|
|||||||
Reference in New Issue
Block a user