콘텐츠로 이동

Task4: 감성보고서

ktt.module.image_validation.Inferencer

보고서 이미지의 타입 분류 및 유효성 검증을 수행하는 파이프라인을 제공합니다.

주요 기능
  • 보고서 이미지에서 내용 영역 자동 추출
  • 보고서 타입 분류 (일반/금융/무효)
  • 보고서 유효성 검증 (유효/무효)
  • 종합 시방준수 상태 평가
Usage

demo/demo_image_validation_inference.py 참고


build(config) classmethod

API 인스턴스를 생성합니다.

Parameters:

Name Type Description Default
config dict

핸들러 빌드를 위한 설정 딕셔너리입니다.

{
    # 보고서 타입 분류 모델 설정
    "report_type_classification": {
        "checkpoint_path": str,             # 모델 체크포인트 경로
        "password": str,                    # 체크포인트 암호
        "inference_options": dict | None,   # 인퍼런스 옵션 (기본값: None)
    },
    # 일반 보고서 검증 모델 설정
    "general_report_classification": {
        "checkpoint_path": str,             # 모델 체크포인트 경로
        "password": str,                    # 체크포인트 암호
        "inference_options": dict | None,   # 인퍼런스 옵션 (기본값: None)
    },
    # 금융 보고서 검증 모델 설정
    "financial_report_classification": {
        "checkpoint_path": str,             # 모델 체크포인트 경로
        "password": str,                    # 체크포인트 암호
        "inference_options": dict | None,   # 인퍼런스 옵션 (기본값: None)
    },
    # 이미지 추출기 설정
    "image_extractor": {
        "vertical_crop_range": tuple[float, float],  # 수직 크롭 비율 (min, max) (기본값: (0.5, 0.9))
        "crop_ratio": float,                # 추가 크롭 비율 (기본값: 0.02)
        "area_limit": int,                  # 최소 영역 임계값 (기본값: 20000)
        "contour_merge_ratio": float,       # 윤곽선 병합 비율 (기본값: 0.3)
    },
    # 공통 설정
    "batch_size": int,                      # 배치 크기 (기본값: 64)
    "device": Union[int, str, torch.device],# 실행 디바이스 (기본값: "cpu")
                                            # 0, 1, ... (GPU 번호) 또는 "cpu"
}

required

Returns:

Name Type Description
Inferencer Inferencer

빌드 완료된 이미지 검증 추론 핸들러 인스턴스.


infer(images)

입력 이미지들에 대해 보고서 검증을 수행합니다.

3단계 파이프라인을 실행합니다: 1) 보고서 이미지에서 내용 영역 추출 2) 보고서 타입 분류 (일반/금융/무효) 3) 타입에 따른 유효성 검증 수행

Parameters:

Name Type Description Default
images list[ndarray]

입력 이미지 리스트 (RGB, shape: (H, W, 3)). 각 이미지는 numpy 배열이며 0-255 범위의 uint8 값을 가져야 합니다.

required

Returns:

Type Description
list[dict[str, Any]]

list[dict[str, Any]]: 각 입력 이미지에 대한 추론 결과 딕셔너리 리스트. 예시는 아래와 같습니다.

[
    {
        "status": str,              # 처리 상태
                                    # "EXTRACTION_FAILED": 이미지 추출 실패
                                    # "CLASSIFIED": 타입 분류 완료 (검증 미수행)
                                    # "VALIDATED": 전체 검증 완료
        "report_type": str,         # 보고서 타입
                                    # "GENERAL": 일반 보고서
                                    # "FINANCIAL": 금융 보고서
                                    # "INVALID": 무효 보고서
        "is_valid": bool,           # 이미지 유효성 여부
                                    # True: 유효한 이미지
                                    # False: 무효한 이미지 또는 추출 실패
        "confidence": float | None, # 분류/검증 신뢰도 점수 (0.0-1.0)
                                    # None: 추출 실패로 인해 신뢰도 계산 불가
    },
    ...  # 추가 이미지들에 대한 결과
]

# 추출 실패 시 기본값. 이미지에서 내용 영역을 추출하지 못한 경우 아래의 기본값을 반환합니다.
{
    "status": "EXTRACTION_FAILED",
    "report_type": "UNKNOWN",
    "is_valid": False,
    "confidence": None,
}

Note
  • status가 "EXTRACTION_FAILED"인 경우 이미지 추출이 실패하여 분류/검증이 수행되지 않았음을 의미합니다.
  • status가 "CLASSIFIED"인 경우 타입 분류까지만 완료되었으며, 무효 보고서로 판정되어 추가 검증이 수행되지 않았습니다.
  • status가 "VALIDATED"인 경우 전체 검증 파이프라인이 정상적으로 완료되었습니다.
  • confidence는 타입 분류 또는 유효성 검증 단계의 신뢰도를 나타내며, 추출 실패 시에는 None입니다.
  • is_valid가 False인 경우의 의미:
    • 추출 실패 (status="EXTRACTION_FAILED")
    • 무효 보고서로 분류됨 (report_type="INVALID")
    • 검증 결과 부적합 판정 (status="VALIDATED", is_valid=False)