왜 인도 주소 파싱이 망가졌는가 (그리고 내가 만든 해결책)
Source: Dev.to
인도 주소의 문제점
모든 나라에는 주소에 대한 특성이 있습니다. 인도의 경우는 그 자체로 하나의 리그에 속합니다.
- 보편적인 도로 번호 체계가 없습니다.
- 같은 도시가 Bengaluru, Bangalore, BLR, 혹은 ಬೆಂಗಳೂರು 등으로 표기될 수 있습니다.
- 주소에 도로명 대신 랜드마크가 포함되는 경우가 많습니다. 예: “Near SBI ATM, Opposite Ganesh Temple”.
- 인구 14억 명을 커버하는 23,915개의 PIN 코드가 존재합니다.
인도에서 전자상거래, 물류, 핀테크, 혹은 정부 기술을 구축한다면 이 장벽에 부딪히게 됩니다. 현재 사용 가능한 옵션은 다음과 같습니다.
- 유료 API (Google, India Post의 SOAP 서비스)
- 특허받은 솔루션 (예: Delhivery)
- 자체 제작 정규식 해킹
오픈소스 libpostal이 대표적인 주소 파서이지만, 인도 형식에는 잘 맞지 않습니다.
bharataddress 소개
bharataddress는 오프라인으로 동작하는 오픈소스 파이썬 라이브러리로, 비구조화된 인도 주소를 구조화된 JSON으로 변환합니다.
주요 기능
- 임베디드 데이터셋: 23,915개의 인도 PIN 코드와 해당 주, 구, 우체국 매핑을 모두 포함.
- 자유형 주소 파싱 – 복잡한 주소를 입력하면 구조화된 JSON을 반환.
- PIN 코드 검증 및 역조회 (PIN → 주, 구, 우체국).
- MIT 라이선스이며 외부 서비스 의존성이 전혀 없습니다.
pip install bharataddress
로드맵 및 해결 과제
퍼지 매칭
“Bangalroe” → “Bangalore”, “Mumabi” → “Mumbai”와 같은 오타를 교정합니다. 손으로 입력하는 모바일 데이터에서는 오타가 일반적입니다.
스크립트 지원
데바나가리, 타밀어, 텔루구어, 칸나다어 등 지역 스크립트로 작성된 주소를 처리합니다.
랜드마크 추출
“Near [X]” 혹은 “Opp. [Y]”와 같은 구조적 요소를 파싱합니다. 이러한 요소는 서구식 주소 모델에 매핑되지 않으며, 지오코딩 데이터보다는 메타데이터로 취급하는 것이 좋을 수 있습니다.
기여 및 피드백
GitHub:
인도 주소 데이터와 관련해 만든 것이 있다면, 어떤 점에서 문제가 발생했는지 알려 주세요. 여러분의 경험이 bharataddress 로드맵을 shaping하는 데 큰 도움이 됩니다.