Researcher & Developer

devcomfort

devcomfort의 기술 블로그 & 포트폴리오

GIST, 광주 AI × Games × PCG

filetype-detector

filetype-detector

파일 확장자(Lexical), magic number(Magic), Google AI 기반(Magika) 세 가지 추론 전략을 유연하게 조합할 수 있는 Python 파일 타입 탐지 라이브러리입니다.

해결하는 문제

파일 타입 탐지는 단순히 확장자를 읽는 것(빠르지만 신뢰하기 어려움)부터 AI 모델로 내용을 분석하는 것(정확하지만 느림)까지 다양한 전략이 존재합니다. filetype-detector는 이 전략들을 통일된 API로 묶고, 상황에 맞게 선택하거나 조합할 수 있게 합니다.

추론 전략 비교

Inferencer평균 처리 시간처리량적합한 용도
LexicalInferencer< 0.001ms50,000+ 파일/초신뢰할 수 있는 확장자 환경
MagicInferencer~1–5ms200–500 파일/초바이너리 파일 내용 기반 탐지
MagikaInferencer~5–10ms100–200 파일/초텍스트 파일 고정밀 탐지
HybridInferencer~1–6ms150–400 파일/초⭐ 기본 권장

HybridInferencer는 바이너리 파일엔 Magic을, 텍스트 파일엔 Magika를 자동으로 선택해 속도와 정확도를 균형 있게 유지합니다.

설치

pip install filetype-detector

시스템 의존성: MagicInferencer, HybridInferencerlibmagic 라이브러리가 필요합니다. Ubuntu: sudo apt-get install libmagic1 / macOS: brew install libmagic

사용 예시

from filetype_detector.auto_inferencer import AutoInferencer

inferencer = AutoInferencer(backend="hybrid")
extension = inferencer.infer("document.pdf")  # → '.pdf'
extension = inferencer.infer("script.py")     # → '.py'

확장

BaseInferencer를 상속해 커스텀 추론기를 구현할 수 있습니다.

from filetype_detector.base_inferencer import BaseInferencer

class CustomInferencer(BaseInferencer):
    def infer(self, file_path) -> str:
        # 커스텀 로직
        return ".custom"