AI를 활용한 OldNYC 사진 1만장 추가

AI helps add 10k more photos to OldNYC

요약

2년에 걸쳐 OldNYC 사진 뷰어를 개선하여 역사 사진 4만9000장(기존 3만9000장에서 1만장 추가)을 더 정확한 위치정보와 함께 제공했습니다. GPT-4o로 지오로케이션 개선, OCR 성능 향상, OpenStreetMap으로 마이그레이션했습니다.

핵심 포인트

  • GPT-4o API를 활용해 설명 텍스트에서 위치 정보 추출하여 6000장 추가 위치 파악
  • Google Maps에서 OpenStreetMap으로 전환하여 비용 절감($35/월 → 무료) 및 역사적 정확성 향상
  • gpt-4o-mini로 OCR 시스템 재구축하여 이전 맞춤형 Ocropus 파이프라인보다 더 나은 성능 달성

왜 중요한가

대규모 레거시 데이터 디지털화 프로젝트에서 현대 AI 도구의 실질적 활용 방법과 비용 효율화 전략을 보여줍니다.

📄 전문 번역

OldNYC 2년간의 조용한 재구축기

지난 2년간 저는 OldNYC 사진 뷰어의 상당 부분을 조용히 다시 만들었습니다. 결과는 놀라울 정도였는데요. 지도에 추가된 역사 사진 1만 장, 훨씬 정확해진 위치 정보, 그리고 운영 비용과 난이도가 크게 낮아진 서비스가 되었거든요. 현대적인 AI 도구와 OpenStreetMap 생태계 덕분입니다.

2016년만 해도 OldNYC는 약 3만 9천 장의 사진을 보유했습니다. 지금은 4만 9천 장이죠.

대부분의 변화는 2024년에 일어났는데, 이렇게 늦게 글을 쓰게 된 건 다른 프로젝트에 빠져 있었기 때문입니다(2026년 현재). OldNYC를 한동안 방문하지 않았다면 한번 둘러보세요. 놓친 사진들이 있을 겁니다.

가장 큰 개선점 세 가지는 이렇습니다. 지오코딩(위치 파악) 성능 향상, 대폭 개선된 OCR, 그리고 오픈 매핑 스택으로의 전환입니다.

더 정확한 위치 파악

OldNYC의 핵심은 역사적 설명을 지리 정보로 변환하는 것입니다. "Broad Street, south from Wall Street"처럼 텍스트로 된 위치를 위도와 경도로 바꾸는 거죠.

처음에는 주로 제목에서 교차로를 추출한 뒤 Google Maps Geocoding API로 보냈습니다. 그 거리들이 아직 존재할 때는 잘 작동했지만, 역사적 교차로 대부분은 더 이상 존재하지 않거든요.

2024년 두 가지 개선이 이를 극적으로 해결했습니다.

첫 번째는 AI를 활용한 텍스트 추출입니다. 일부 이미지는 제목이 아닌 설명에만 유용한 위치 정보를 담고 있었습니다. 이제 OpenAI API(gpt-4o)를 사용해 그 텍스트에서 위치를 추출합니다.

예를 들어보겠습니다.

공립학교 - 브루클린 - P.S. 143. 1930
Havemeyer Street, west side, from North 6th to North 7th Streets, 
showing Public School No. 143. The view is north from North 6th Street.

학교가 더 이상 존재하지 않아서 제목만으로는 위치를 파악할 수 없습니다. 하지만 GPT는 설명에서 이런 정보를 추출해냅니다:

  • North 6th Street와 Havemeyer Street의 교차로
  • North 7th Street와 Havemeyer Street의 교차로

이 교차로들이 OpenStreetMap에 존재하므로, OldNYC는 이미지를 첫 번째 교차로에 배치합니다.

이런 작업은 생각보다 복잡한 해석 능력이 필요합니다. GPT는 "North 6th"가 "North 6th Street"를 의미한다는 걸 이해하고, 관련 교차로를 추출하면서 "west side" 같은 무관한 표현은 무시합니다. 컴퓨터는 역사적으로 이런 종류의 작업을 어려워했는데, 최신 AI 모델들은 정확히 해냅니다.

GPT 활용으로 약 6천 장의 추가 사진을 위치시킬 수 있었습니다. 오늘날 OldNYC는 위치 정보가 있는 사진의 약 87%를 정확히 위치시킬 수 있고, 지도에 표시된 이미지의 약 96%가 올바른 위치에 나타납니다.

두 번째는 지오코딩 데이터 소스의 변경입니다. Google Maps 지오코더를 OpenStreetMap과 역사적 거리 데이터셋으로 교체했습니다.

예를 들어, Fulton Street와 Nassau Street는 1930년대 브루클린에서 교차했지만 지금은 그렇지 않습니다. Google은 이를 맨해튼의 같은 이름 거리로 지오코딩합니다(맨해튼에는 여전히 그 교차로가 존재하니까요).

OldNYC는 이제 NYPL의 역사적 거리 프로젝트 데이터를 활용합니다. 이 데이터에는 1930년대 브루클린의 원래 교차로가 포함되어 있거든요. 덕분에 사진이 정확한 위치에 나타납니다.

획기적으로 개선된 OCR

OldNYC의 대부분 사진에는 NYPL 카탈로그의 설명이 붙어 있습니다. 그런데 NYPL 사이트에서는 이 설명들이 스캔된 타이라이터 이미지로만 존재하고, 실제 텍스트가 아니었습니다.

2015년 OldNYC를 처음 출시했을 때, 이 이미지들을 텍스트로 변환하는 OCR이 가장 어려운 기술 문제였습니다. Ocropus를 사용한 커스텀 파이프라인을 구축해서 99% 이상의 문자 정확도를 달성했죠. 그럼에도 불구하고 읽을 때 오류가 눈에 띄곤 했습니다.

오류를 수정하기 위해 "Fix Typos" 기능을 추가해서 사용자가 텍스트를 수정할 수 있게 했습니다. 이건 뉴욕커들의 집단 강박증을 자극했고, 수천 개의 수정 사항이 들어왔습니다.

2024년에 gpt-4o-mini를 사용해 OCR 시스템을 완전히 다시 만들었습니다.

극적인 예를 보여드리겠습니다. 기존 OCR은 이상한 폰트 때문에 완전한 깨진 글자를 만들어냈습니다:

구형 OCR 결과: "nfkrkfkfjf kfkfk fkfk"
새 OCR 결과: [정확한 텍스트]

파이프라인을 재구축하면서 얻은 교훈들:

  • 2024년에는 2015년보다 OCR이 훨씬 더 간단한 문제가 되었습니다.
  • OpenAI 같은 도구들 덕분에 복잡한 커스텀 모델 구축 대신 간단한 API 호출로 해결할 수 있게 됐죠.

오픈 매핑 스택으로 이전

OldNYC가 출시되었을 때 Google Maps가 웹 매핑의 기본 선택지였고, 무료로 사용할 수 있었습니다. 그런데 시간이 지나면서 Google의 요금 체계가 바뀌었습니다. 2024년 말, Google은 월 200달러의 무료 크레딧을 개별 API별 할당량으로 변경했거든요. 새로운 시스템에서는 OldNYC가 월 약 35달러의 비용이 들게 되었습니다.

취미 프로젝트를 위해 Google에 계속 돈을 낼 수 없었습니다. 그래서 OpenStreetMap 벡터 타일과 MapLibre로 이전했습니다.

새로운 스택의 좋은 점들:

  • 비용이 없습니다. OpenStreetMap은 무료죠.
  • 전체 제어권이 있습니다. 1930년대에 존재하지 않았던 고속도로와 터널 같은 시대착오적 요소들을 제거할 수 있습니다.

예를 들어, 지도에서 Brooklyn-Battery Tunnel을 제거했습니다. 1930년대에는 이 터널이 없었거든요!

  • 역사적 정확성을 추구할 수 있습니다. 미래에는 수십 년 전 지도를 오버레이할 수도 있을 것 같습니다.

앞으로의 방향

할 일이 여전히 많습니다.

AI를 사용해 이미지에서 추가 정보를 추출할 수 있을 것 같습니다. 사람, 건물, 실내/실외 장면을 식별하는 식으로요. 다른 컬렉션의 사진들을 통합하고 싶기도 합니다.

또한 OpenHistoricalMap에 기여하기 시작했습니다. 이건 OpenStreetMap의 역사 버전인데, 언젠가 뉴욕의 완전한 역사적 거리 그리드를 포함하게 되면 사진 위치 파악이 훨씬 쉬워질 겁니다.

마지막으로, 다른 도시를 위해 OldNYC 스타일의 사이트를 개발자들이 쉽게 만들 수 있도록 하고 싶습니다. 관심 있으신 분이 있으면 연락 주세요.


📪 OldNYC 업데이트 소식을 받고 싶으신가요? 새 메일링 리스트를 구독해주세요. 2026년 이전에 구독하셨다면 다시 구독해주셔야 합니다. MailChimp가 기존 리스트를 삭제했거든요. 정말 미안합니다. 😡

피드백이 있으시면 언제든 연락 주세요.