메뉴
HN
Hacker News • 172일 전

AI 활용으로 옛 뉴욕 사진 1만 장 추가

IMP
7/10
핵심 요약

뉴욕의 역사 지도 프로젝트인 OldNYC가 최신 AI 도구를 활용해 1만 장의 역사적 사진을 새롭게 추가하고 지도 정확도를 대폭 개선했습니다. OpenAI의 GPT-4o를 활용한 정확한 지오코딩과 OCR 데이터 추출을 통해 과거 타이핑된 텍스트의 오류를 획기적으로 줄였습니다. 이를 통해 역사적 사진의 87%에 대해 정확한 위치를 매핑하고 96%의 높은 정확도를 달성했습니다.

번역된 본문

내비게이션 토글 danvk.org 홈 블로그 연락처 기능 캐츤킬 하이킹 프로젝트 온라인 보글 솔버 베이스 페어 컬러러 자바스크립트 16진수 ↔ 10진수 변환기 브라우저용 NS-Tower GW-BASIC 프로그램 디코더 고전 리얼베이직 사이트 (1999) 빌의 추측

2026.03.08

AI가 OldNYC에 10,000장의 사진을 추가하다

지난 2년간 저는 조용히 OldNYC 사진 뷰어의 주요 부분을 재구축했습니다. 그 결과 최신 AI 도구와 OpenStreetMap 생태계 덕분에 지도에 10,000장의 추가 역사적 사진이 생겼고, 위치 정보가 더 정확해졌으며, 사이트 운영 비용이 저렴하고 쉬워졌습니다. OldNYC는 2016년에 약 39,000장의 사진을 보유하고 있었습니다. 오늘날에는 49,000장이 있습니다. 이러한 변화의 대부분은 2024년에 일어났지만, 2026년이 된 지금에서야 이에 대해 글을 쓰고 있습니다. (관련 없는 프로젝트에 정신이 팔려서였죠.) 한동안 OldNYC를 방문하지 않았다면 한번 들러보세요. 놓쳤던 사진들을 발견할 수 있을 것입니다.

다음은 세 가지 주요 개선 사항입니다: 더 나은 지오코딩(Geolocation), 획기적으로 개선된 OCR, 그리고 오픈 매핑 스택으로의 전환입니다.

OpenAI와 OpenStreetMap을 활용한 더 나은 지오코딩 OldNYC는 역사적 설명을 지오코딩하는 방식으로 작동합니다. 즉, "월 스트리트에서 남쪽으로 브로드 스트리트"와 같은 텍스트를 위도와 경도로 변환합니다. 원래 이는 주로 제목에서 교차하는 거리를 추출하여 Google Maps 지오코딩 API로 보내는 방식이었습니다. 이는 해당 거리가 여전히 존재할 때는 잘 작동했지만, 많은 역사적 교차로가 현재는 사라진 상태였습니다.

2024년의 두 가지 변화가 이를 극적으로 개선했습니다.

GPT를 활용한 복잡한 지오코딩 일부 이미지에는 설명에만 유용한 위치 세부 정보가 포함되어 있습니다. 저는 이제 OpenAI API(gpt-4o)를 사용하여 해당 텍스트에서 위치를 추출합니다.

예시: 공립학교 - 브루클린 - P.S. 143. 1930년 헤이버마이어 스트리트, 서쪽, 노스 6th에서 노스 7th 스트리트 사이, 143번 공립학교를 보여줌. 노스 6th 스트리트에서 북쪽을 바라본 전망. 학교는 더 이상 존재하지 않으므로 제목만으로는 지오코딩할 수 없습니다.

설명에서 GPT는 다음을 추출했습니다: 헤이버마이어 스트리트 & 노스 6th 스트리트 헤이버마이어 스트리트 & 노스 7th 스트리트 143번 공립학교

두 교차로 모두 OpenStreetMap에 존재하므로 OldNYC는 이미지를 첫 번째 위치에 배치합니다. 이런 작업은 놀라울 정도로 많은 해석을 필요로 합니다. GPT는 "North 6th"가 "North 6th Street"를 의미한다는 것을 이해하고, "west side"와 같은 관련 없는 문구는 무시한 채 관련 교차로를 추출합니다. 컴퓨터는 역사적으로 이러한 유형의 작업에 어려움을 겪었지만, 최신 AI 모델은 이를 완벽하게 해냅니다.

GPT를 사용하여 약 6,000장의 추가 사진 위치를 파악했습니다. 오늘날 OldNYC는 사용 가능한 위치 데이터가 있는 사진의 약 87%를 찾을 수 있으며, 매핑된 이미지의 약 96%가 올바른 위치에 나타납니다.

지오코딩을 위한 OSM 활용 저는 또한 Google Maps 지오코더를 OpenStreetMap과 역사적 거리 데이터 세트로 교체했습니다.

예를 들어: 브루클린: 풀턴 스트리트 – 나소 스트리트 이 거리들은 1930년대 브루클린에서 교차했지만 오늘날에는 더 이상 교차하지 않습니다. 구글은 이를 같은 이름의 거리가 여전히 교차하는 맨해튼으로 지오코딩합니다. OldNYC는 이제 원래 브루클린 교차로를 포함하는 NYPL의 [역사적 거리 프로젝트] 데이터를 통합했습니다. 이제 사진이 올바른 위치에 나타납니다.

AI 기반 OCR 대부분의 OldNYC 사진에는 NYPL 카탈로그의 설명이 포함되어 있지만, NYPL 사이트에서는 이러한 설명이 텍스트가 아닌 스캔된 타자기 이미지입니다. 2015년에 OldNYC를 시작했을 때 이러한 이미지를 텍스트로 변환하는 것(OCR)이 가장 어려운 기술적 문제였습니다. 저는 99% 이상의 문자 정확도를 달성한 Ocropus를 사용하여 맞춤형 파이프라인을 구축했습니다. 그럼에도 불구하고 읽을 때 오류가 눈에 띄었습니다. 실수를 수정하기 위해 사용자가 전사 내용을 수정할 수 있는 "오타 수정" 기능을 추가했습니다. 이는 뉴욕 거주자들의 집단 강박관념을 자극했고 사용자들은 수천 건의 수정 사항을 제출했습니다.

2024년에 저는 gpt-4o-mini를 사용하여 OCR 시스템을 재구축했습니다. 결과는 훨씬 더 좋았습니다:

텍스트 범위가 25,000장에서 32,000장 이미지로 증가했습니다. 두 시스템 모두를 사용한 이미지의 경우, GPT가 약 75%의 경우 더 우수했고 명백히 더 나빴던 경우는 약 2%에 불과했습니다.

다음은 특이한 글꼴로 인해 기존 OCR이 완전한 알 수 없는 글자를 생성했던 극적인 예시입니다: GPT는 이를 완벽하게 전사했습니다. 파이프라인 재구축을 통해 얻은 몇 가지 교훈은 다음과 같습니다: GPT는...

원문 보기
원문 보기 (영어)
Toggle navigation danvk.org Home Blog Contact Features Catskills Hiking Project Online Boggle Solver Base Pair Colorer Hex ↔ Dec converter in JavaScript NS-Tower in the Browser GW-BASIC program decoder Ancient REALbasic site (1999) Beal's Conjecture 2026.03.08 AI helps add 10,000 more photos to OldNYC Over the past two years I’ve quietly rebuilt major parts of the OldNYC photo viewer . The result: 10,000 additional historic photos on the map , more accurate locations, and a site that’s cheaper and easier to run—thanks to modern AI tools and the OpenStreetMap ecosystem. OldNYC had about 39,000 photos in 2016 . Today it has 49,000 . Most of these changes happened in 2024, but I’m only writing about them now in 2026. (I got distracted by an unrelated project .) If you haven’t visited OldNYC in a while, take a look —you might find some photos you missed. Here are the three biggest improvements: better geolocation, dramatically improved OCR, and a switch to an open mapping stack. Better Geolocation with OpenAI and OpenStreetMap OldNYC works by geocoding historical descriptions—turning text like “Broad Street, south from Wall Street” into a latitude and longitude. Originally this mostly meant extracting cross streets from titles and sending them to the Google Maps Geocoding API. That worked well when the streets still existed—but many historical intersections don’t. Two changes in 2024 improved this dramatically. GPT for hard geocodes Some images include useful location details only in the description. I now use the OpenAI API ( gpt-4o ) to extract locations from that text. Example : Public Schools - Brooklyn - 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. The school no longer exists, so the title alone can’t be geocoded. From the description, GPT extracted: Havemeyer St & North 6th St Havemeyer St & North 7th St Public School No. 143 Both intersections exist in OpenStreetMap, so OldNYC places the image at the first one. Tasks like this require a surprising amount of interpretation: GPT understands that “North 6th” means “North 6th Street” and extracts the relevant intersections while ignoring irrelevant phrases like “west side”. Computers have historically had trouble with this type of task, but the newer AI models nail it. Using GPT located about 6,000 additional photos. Today OldNYC can locate roughly 87% of photos with usable location data , and about 96% of mapped images appear in the correct location. OSM for geocoding I also replaced the Google Maps geocoder with OpenStreetMap and historical street datasets. For example : Brooklyn: Fulton Street – Nassau Street These streets intersected in Brooklyn in the 1930s but no longer do today. Google geocodes this to Manhattan, where streets with those names still intersect. OldNYC now incorporates data from the NYPL’s [historical streets project], which includes the original Brooklyn intersection. The photo now appears in the correct location. AI-Powered OCR Most OldNYC photos include descriptions from the NYPL catalog—but on the NYPL site these are scanned typewriter images , not text. When I launched OldNYC in 2015, converting these images to text (OCR) was the hardest technical problem. I built a custom pipeline using Ocropus that achieved over 99% character accuracy. Even so, the errors were noticeable when reading. To fix mistakes I added a “Fix Typos” feature that let users correct transcriptions. This triggered New Yorkers’ collective OCD and users submitted thousands of edits. In 2024 I rebuilt the OCR system using gpt-4o-mini . The results were much better: text coverage increased from 25,000 to 32,000 images for images with both systems, GPT was better ~75% of the time and clearly worse only ~2% Here’s a dramatic example where the old OCR produced complete gibberish due to an unusual font: GPT transcribes it perfectly. A few lessons from rebuilding the pipeline: GPT worked best on high-resolution source images , not the low-res images on the NYPL site. The text-detection code I wrote in 2015 still helps by cropping images before OCR. Providing context like titles caused GPT to hallucinate text . The best results came from giving it only the image. Overall, tools like OpenAI mean that OCR is a much easier problem in 2024 than it was in 2015. Moving from Google Maps to OpenStreetMap When OldNYC launched, Google Maps was the default choice for web mapping, and it was free to use. But over time, Google’s pricing model changed. In late 2024 they replaced their $200/month free credit with separate quotas for individual APIs. Under the new system, rather than being free , OldNYC would have cost about $35/month . Instead of paying Google indefinitely for a hobby project, I migrated the site to OpenStreetMap vector tiles and MapLibre . The new stack has some nice benefits: faster rendering smoother zooming full control over map styling For example, I can remove anachronisms like highways and tunnels that didn’t exist in the 1930s. Look, no Brooklyn-Battery Tunnel! What’s Next There’s still plenty to improve. AI could extract additional information from images—identifying people, buildings, or indoor/outdoor scenes. I’d also like to incorporate photographs from other collections. I’ve also started contributing to OpenHistoricalMap , the history-focused cousin of OpenStreetMap. If it eventually includes full historical street grids for NYC, locating photos could become dramatically easier. Finally, I’d love to make it easier for developers to build OldNYC-style sites for other cities. If you’re interested, please reach out. 📪 If you’d like to be informed of OldNYC updates, please subscribe to the new mailing list! If you subscribed before 2026, you’ll need to subscribe again. Sorry, MailChimp deleted the old list. 😡 Related Posts 09 Oct 2025 » Working on Hard Problems 11 Sep 2025 » Python and C++ with pybind11: A Great Combination 25 Aug 2025 » Boggle Roundup: My Fifteen Minutes of Fame --> Please reach out if you have any feedback.