AI/ML·Hacker News·3 lượt xem

AI giúp thêm 10k ảnh vào OldNYC

AI helps add 10k more photos to OldNYC

AI Summary

Dự án OldNYC vừa đạt cột mốc ấn tượng khi bổ sung thành công 10.000 bức ảnh lịch sử vào bản đồ nhờ việc nâng cấp data processing pipeline bằng các công cụ AI hiện đại và mã nguồn mở. Bằng cách tận dụng GPT-4o để thực hiện trích xuất văn bản phức tạp và geocoding, nhà phát triển đã có thể định vị những hình ảnh vốn trước đây không xác định được tọa độ, đồng thời cải thiện độ chính xác cho các giao lộ lịch sử. Đáng chú ý, việc thay thế một custom OCR pipeline bằng GPT-4o-mini đã giúp tăng đáng kể độ phủ và chất lượng phiên âm dữ liệu. Dự án này là một case study thú vị về việc ứng dụng LLM để thay thế các heuristics "dễ vỡ" trước đây bằng những giải pháp mạnh mẽ, có khả năng hiểu ngữ cảnh tốt hơn, từ đó tối ưu hóa công tác làm giàu dữ liệu (data enrichment) và khai thác thông tin từ các hệ thống cũ.

Trong hai năm qua, tôi đã âm thầm xây dựng lại các phần chính của trình xem ảnh OldNYC. Kết quả: 10.000 bức ảnh lịch sử bổ sung trên bản đồ, vị trí chính xác hơn và trang web rẻ hơn và dễ dàng hơn...

Trong hai năm qua, tôi đã âm thầm xây dựng lại các phần quan trọng của trình xem ảnh OldNYC. Kết quả là: thêm 10.000 bức ảnh lịch sử trên bản đồ, vị trí chính xác hơn, và một trang web rẻ hơn, dễ vận hành hơn—nhờ vào các công cụ AI hiện đại và hệ sinh thái OpenStreetMap.

OldNYC có khoảng 39.000 bức ảnh vào năm 2016. Ngày nay, con số đó là 49.000.

Hầu hết những thay đổi này diễn ra vào năm 2024, nhưng mãi đến năm 2026 tôi mới viết về chúng. (Tôi đã bị xao nhãng bởi một dự án khác.) Nếu bạn đã lâu không ghé thăm OldNYC, hãy xem thử—bạn có thể tìm thấy một vài bức ảnh mà mình đã bỏ lỡ.

Dưới đây là ba cải tiến lớn nhất: định vị địa lý tốt hơn, OCR được cải thiện đáng kể và chuyển sang nền tảng bản đồ mở.

Định vị địa lý tốt hơn với OpenAI và OpenStreetMap

OldNYC hoạt động bằng cách geocoding (mã hóa địa lý) các mô tả lịch sử—chuyển đổi văn bản như “Broad Street, nam từ Wall Street” thành tọa độ vĩ độ và kinh độ.

Ban đầu, việc này chủ yếu dựa vào việc trích xuất tên đường giao nhau từ tiêu đề và gửi chúng đến Google Maps Geocoding API. Cách đó hoạt động tốt khi các con đường vẫn còn tồn tại—nhưng nhiều giao lộ lịch sử thì không.

Hai thay đổi trong năm 2024 đã cải thiện điều này một cách đáng kể.

GPT cho các ca khó

Một số hình ảnh chỉ bao gồm các chi tiết vị trí hữu ích trong phần mô tả. Giờ đây, tôi sử dụng OpenAI API (gpt-4o) để trích xuất vị trí từ văn bản đó.

Ví dụ:

Brooklyn Public School 143

Các trường công lập - Brooklyn - P.S. 143. 1930

Đường Havemeyer, phía tây, từ đường North 6th đến North 7th, cho thấy Trường công lập số 143. Góc nhìn từ phía bắc của đường North 6th.

Ngôi trường này không còn tồn tại nữa, nên chỉ dựa vào tiêu đề thì không thể mã hóa địa lý được. Từ phần mô tả, GPT đã trích xuất:

  • Đường Havemeyer & Đường North 6th
  • Đường Havemeyer & Đường North 7th
  • Trường công lập số 143

Cả hai giao lộ đều tồn tại trong OpenStreetMap, vì vậy OldNYC đặt hình ảnh tại giao lộ đầu tiên.

Những tác vụ như thế này đòi hỏi khả năng diễn giải đáng kinh ngạc: GPT hiểu rằng “North 6th” nghĩa là “North 6th Street” và trích xuất các giao lộ liên quan trong khi bỏ qua các cụm từ không liên quan như “phía tây”. Máy tính trước đây thường gặp khó khăn với loại tác vụ này, nhưng các mô hình AI mới hơn đã làm rất tốt.

Việc sử dụng GPT đã giúp định vị thêm khoảng 6.000 bức ảnh. Ngày nay, OldNYC có thể xác định vị trí của khoảng 87% số ảnh có dữ liệu vị trí sử dụng được, và khoảng 96% hình ảnh được gắn bản đồ xuất hiện đúng vị trí.

OSM cho việc mã hóa địa lý

Tôi cũng đã thay thế trình mã hóa địa lý của Google Maps bằng OpenStreetMap và các bộ dữ liệu đường phố lịch sử.

Ví dụ:

Image of Fulton Street elevated line in 1937

Brooklyn: Fulton Street – Nassau Street

Những con phố này từng giao nhau ở Brooklyn vào những năm 1930 nhưng ngày nay thì không. Google mã hóa địa lý vị trí này thành Manhattan, nơi có những con phố cùng tên vẫn còn giao nhau.

OldNYC hiện đã kết hợp dữ liệu từ dự án đường phố lịch sử của NYPL, bao gồm cả giao lộ cũ ở Brooklyn. Bức ảnh giờ đây đã xuất hiện ở đúng vị trí.

OCR được hỗ trợ bởi AI

Hầu hết các bức ảnh OldNYC đều bao gồm mô tả từ danh mục của NYPL—nhưng trên trang web của NYPL, đây là hình ảnh máy chữ đã được quét, chứ không phải văn bản.

Typewriter text reading "Clinton Street, south from Livingston Street."

Khi tôi ra mắt OldNYC vào năm 2015, việc chuyển đổi các hình ảnh này thành văn bản (OCR) là vấn đề kỹ thuật khó khăn nhất. Tôi đã xây dựng một quy trình tùy chỉnh sử dụng Ocropus đạt độ chính xác ký tự hơn 99%. Mặc dù vậy, các lỗi vẫn dễ dàng nhận thấy khi đọc.

Để sửa lỗi, tôi đã thêm tính năng “Sửa lỗi chính tả” cho phép người dùng hiệu đính các bản ghi. Điều này đã kích thích tinh thần cầu toàn của người dân New York và họ đã gửi hàng ngàn lượt chỉnh sửa.

Vào năm 2024, tôi đã xây dựng lại hệ thống OCR bằng gpt-4o-mini.

Kết quả khả quan hơn nhiều:

  • độ phủ văn bản tăng từ 25.000 lên 32.000 hình ảnh
  • đối với những hình ảnh dùng cả hai hệ thống, GPT tốt hơn khoảng 75% thời gian và chỉ tệ hơn rõ rệt trong khoảng 2%

Đây là một ví dụ điển hình nơi OCR cũ tạo ra những ký tự vô nghĩa do font chữ lạ:

descriptive text in an italic font

GPT đã chuyển mã nó một cách hoàn hảo.

Một vài bài học từ việc xây dựng lại quy trình này:

  • GPT hoạt động tốt nhất trên các hình ảnh nguồn có độ phân giải cao, không phải hình ảnh độ phân giải thấp trên trang web của NYPL.
  • Mã phát hiện văn bản tôi viết năm 2015 vẫn hữu ích trong việc cắt hình ảnh trước khi thực hiện OCR.
  • Cung cấp ngữ cảnh như tiêu đề khiến GPT tạo ra văn bản sai lệch (hallucinate). Kết quả tốt nhất thu được khi chỉ đưa cho nó hình ảnh.

Nhìn chung, các công cụ như OpenAI đồng nghĩa với việc OCR là một vấn đề dễ dàng hơn nhiều vào năm 2024 so với năm 2015.

Chuyển từ Google Maps sang OpenStreetMap

Khi OldNYC ra mắt, Google Maps là lựa chọn mặc định cho bản đồ web và nó miễn phí. Nhưng theo thời gian, mô hình định giá của Google đã thay đổi. Vào cuối năm 2024, họ đã thay thế hạn mức miễn phí 200 đô la/tháng bằng các hạn ngạch riêng biệt cho từng API. Theo hệ thống mới, thay vì được miễn phí, OldNYC sẽ tốn khoảng 35 đô la/tháng.

Thay vì trả tiền cho Google mãi mãi cho một dự án sở thích, tôi đã chuyển trang web sang OpenStreetMap vector tilesMapLibre.

Nền tảng mới có một số lợi ích tuyệt vời:

  • kết xuất nhanh hơn
  • thu phóng mượt mà hơn
  • toàn quyền kiểm soát kiểu dáng bản đồ

Ví dụ, tôi có thể loại bỏ các yếu tố lỗi thời như đường cao tốc và đường hầm vốn không tồn tại vào những năm 1930.

Map of New York bay without the Brooklyn-Battery Tunnel Nhìn kìa, không có đường hầm Brooklyn-Battery!

Điều gì tiếp theo

Vẫn còn rất nhiều thứ để cải thiện.

AI có thể trích xuất thêm thông tin từ hình ảnh—xác định người, tòa nhà hoặc các cảnh trong nhà/ngoài trời. Tôi cũng muốn kết hợp thêm ảnh từ các bộ sưu tập khác.

Tôi cũng đã bắt đầu đóng góp cho OpenHistoricalMap, một dự án tập trung vào lịch sử thuộc hệ sinh thái OpenStreetMap. Nếu sau này nó bao gồm đầy đủ mạng lưới đường phố lịch sử cho NYC, việc xác định vị trí ảnh có thể trở nên dễ dàng hơn nhiều.

Cuối cùng, tôi muốn giúp các nhà phát triển xây dựng các trang web theo phong cách OldNYC cho các thành phố khác một cách dễ dàng hơn. Nếu bạn quan tâm, hãy liên hệ với tôi.

📪 Nếu bạn muốn nhận thông tin về các cập nhật của OldNYC, vui lòng đăng ký vào danh sách gửi thư mới! Nếu bạn đã đăng ký trước năm 2026, bạn sẽ cần phải đăng ký lại. Xin lỗi, MailChimp đã xóa danh sách cũ rồi. 😡

Tác giả: evakhoury

#discussion