1 điểm bởi GN⁺ 2025-06-19 | 1 bình luận | Chia sẻ qua WhatsApp
  • Biến chiếc iPhone 8 suýt bị bỏ quên trong ngăn kéo thành máy chủ OCR dựa trên SwiftUI, xử lý 83.418 yêu cầu và 48GB hình ảnh trong hơn 1 năm bằng Apple Vision
  • Hệ thống gồm iPhone 8, Mini PC cho dịch vụ web và định tuyến API, EcoFlow River 2 Pro 768Wh, tấm pin mặt trời 220W và mạng Tailscale
  • Tổng điện năng tiêu thụ khoảng 1.2kWh mỗi ngày, trong khi đầu vào điện mặt trời thay đổi rất lớn theo mùa, từ đỉnh 150~220W vào mùa hè xuống chỉ 5~20W vào mùa đông
  • Sau khi vận hành liên tục, tình trạng pin của iPhone còn 76%; vào những ngày bận rộn hệ thống xử lý hơn 1.000 yêu cầu, nhưng vẫn cần ứng phó riêng với các giới hạn nền của iOS và quản lý nhiệt
  • Thay vì OCR trên đám mây, hệ thống chọn xử lý cục bộ để loại bỏ chi phí theo từng yêu cầu và việc tải ảnh lên máy chủ bên ngoài, đồng thời tiết kiệm 84~120 CAD tiền điện mỗi năm và giảm rác thải điện tử

Chuyển một chiếc iPhone 8 cũ thành máy chủ OCR

  • Dự án xử lý ảnh cá nhân tự động phân loại hàng trăm hình ảnh mỗi ngày, và OCR vốn cũng có thể chạy trên Mac
  • Tận dụng chiếc iPhone 8 không còn dùng đến cùng với EcoFlow River 2 Pro mua để đi cắm trại, tác giả biến nó thành máy chủ OCR chạy bằng năng lượng mặt trời
  • OCR được dùng cho một dự án phụ tách biệt với blog
  • Kết quả sau hơn 1 năm vận hành như sau
    • Xử lý 83.418 yêu cầu OCR
    • Xử lý 48GB dữ liệu hình ảnh
    • Những ngày bận rộn xử lý hơn 1.000 yêu cầu
    • Tình trạng pin iPhone 76%
    • Tiết kiệm tiền điện hằng năm 84~120 CAD

Cấu hình hệ thống và luồng xử lý

  • Toàn bộ hệ thống được chia thành bốn thiết bị và một mạng
    • Mini PC: chạy web server, dịch vụ xử lý ảnh, Plex server và các dịch vụ khác
    • iPhone 8: đặt cạnh cửa sổ, chạy ứng dụng SwiftUI để xử lý OCR và hiển thị dashboard thời gian thực
    • EcoFlow power station: cung cấp điện off-grid cho iPhone và Mini PC
    • Tailscale network: đảm nhiệm kết nối giữa các thiết bị
  • Khi dịch vụ xử lý ảnh gửi hình cần OCR tới iPhone, iPhone sẽ nhận dạng văn bản bằng Apple Vision rồi gửi kết quả trở lại
  • Dashboard trên iPhone hiển thị thống kê xử lý và trạng thái máy chủ; UI ví dụ gồm Requests Today, Total Processed, Avg Processing Time, Success Rate, trạng thái pin và Server running on port 8080
  • Google Analytics 4 cũng được tích hợp, hiển thị trên dashboard tổng cộng 139.917 người dùng, 17.643 trong tháng này, thời lượng phiên trung bình 6 phút 28 giây11 người dùng đang hoạt động

Ứng dụng OCR iOS dựa trên Apple Vision

  • Phần khó nhất khi tạo máy chủ trên iOS là giữ cho ứng dụng luôn tiếp tục chạy
  • Cốt lõi của OCR là VNRecognizeTextRequest trong framework Vision
    • recognitionLevel = .accurate
    • usesLanguageCorrection = true
    • VNImageRequestHandler nhận CGImage và thực thi yêu cầu
    • Kết quả nhận dạng được trả về bằng cách gom chuỗi ứng viên hàng đầu từ VNRecognizedTextObservation
  • OCR được thực hiện on-device nên không có gọi API, giới hạn sử dụng hay gửi ảnh tới máy chủ bên ngoài
  • Độ chính xác ở mức tương đương với một số dịch vụ đám mây đã thử nghiệm
  • Khả năng nhận dạng văn bản của framework Vision đã được cải thiện theo thời gian; đặc biệt, việc nhận dạng chữ viết tay và các font lạ trước đây từng thất bại nay đã hoạt động

Cấu hình điện mặt trời và vận hành theo mùa

  • Thiết bị điện gồm EcoFlow River 2 Pro 768Wh và tấm pin mặt trời 220W
  • Theo dữ liệu TP-Link, mức tiêu thụ điện thực tế của toàn hệ thống vào khoảng 1.2kWh mỗi ngày
Thành phần Công suất nhàn rỗi Tải xử lý Ghi chú
iPhone 8 OCR Server 0.5~1W 2~5W Hiệu quả
Mini PC 15W 25~30W Bao gồm Plex, Archive Warriors
Tổng tiêu thụ mỗi ngày khoảng 1.2kWh biến thiên Theo dữ liệu TP-Link
  • Hiệu suất điện mặt trời thay đổi lớn theo mùa
    • Mùa hè: đầu vào đỉnh 150~220W, có thể vận hành liên tục và vẫn sạc pin
    • Mùa xuân·thu: trung bình 20~60W, vận hành kết hợp điện mặt trời và pin
    • Mùa đông: may mắn thì đạt 5~20W, phần lớn dựa vào pin và thời gian chạy là 15~20 giờ
  • Hệ thống quản lý pin của River 2 Pro điều khiển đường cong sạc, không phải kiểu chỉ đẩy điện vào thiết bị
  • Vào những buổi sáng lạnh ở Canada, thời gian xử lý chậm hơn; iPhone xử lý OCR nhanh hơn khi máy hơi ấm

Tính toán chi phí và so sánh với OCR đám mây

  • Chi phí ban đầu như sau
    • EcoFlow River 2 Pro: 599 CAD, vốn được mua để đi cắm trại
    • Tấm pin mặt trời 220W: 180 CAD
    • Cáp và phần cứng gắn lắp: khoảng 50 CAD
    • Khoản đầu tư thêm cho điện mặt trời: khoảng 230 CAD
  • Theo dữ liệu thực tế từ EcoFlow, mức tiêu thụ hàng tháng là 37.4kWh vào tháng 5 và 45.8kWh vào tháng 4
  • Số tiền tiết kiệm quy đổi từ tiền điện là khoảng 84~120 CAD mỗi năm, và thời gian hoàn vốn khoảng 2~3 năm
  • Dịch vụ OCR đám mây thường tính phí 1.00~1.50 CAD cho mỗi 1.000 yêu cầu
  • Nếu hơn 83.000 yêu cầu được xử lý bằng OCR đám mây, chi phí ước tính sẽ vào khoảng 83~125 CAD
  • Cấu hình cục bộ dùng điện mặt trời không có chi phí theo từng yêu cầu và không gửi hình ảnh tới máy chủ bên ngoài

Độ ổn định và giới hạn bộc lộ sau 1 năm vận hành

  • iPhone 8 đã chạy liên tục hơn 1 năm, và không cho thấy suy giảm hiệu năng rõ rệt dù phải chịu tải liên tục
  • Xử lý nền của iOS hoạt động tốt hơn dự đoán, nhưng vẫn cần cấu hình phù hợp
    • Sử dụng Background App Refresh
    • Duy trì HTTP server phản hồi các yêu cầu định kỳ
    • Chỉ dùng tối thiểu các dịch vụ vị trí
  • Để đối phó với tính gián đoạn của điện mặt trời, power station được cấu hình ưu tiên iPhone, vốn là thiết bị tiêu thụ điện thấp
    • Khi pin yếu, Mini PC sẽ tắt an toàn
    • Nếu cần, iPhone có thể tự xử lý các yêu cầu OCR cơ bản trong vài giờ
  • Ánh nắng trực tiếp và xử lý liên tục có thể gây thermal throttling, vì vậy hệ thống bổ sung các biện pháp tạo bóng râm, cải thiện luồng không khí và giảm yêu cầu khi nhiệt độ cao được phát hiện
  • iOS không muốn ứng dụng chạy mãi mãi, nên cần cân bằng giữa việc duy trì hoạt động và bảo toàn pin

Xử lý ưu tiên cục bộ và tái sử dụng thiết bị

  • Mọi hình ảnh đều ở lại trên thiết bị của người dùng, không có tải lên đám mây hay quyền truy cập của bên thứ ba
  • Dù số tiền tiết kiệm không đến mức thay đổi cuộc sống, dự án vẫn cho thấy các tác vụ tính toán có ý nghĩa hoàn toàn có thể chạy bằng năng lượng tái tạo
  • Chiếc iPhone đáng lẽ sẽ nằm trong ngăn kéo nay được dùng làm máy chủ OCR thay vì trở thành rác thải điện tử
  • Không phải mọi xử lý đều cần nằm trên đám mây; thiết bị cục bộ chạy bằng năng lượng mặt trời cũng có thể trực tiếp xử lý dữ liệu

Tài nguyên tham khảo

1 bình luận

 
GN⁺ 2025-06-19
Ý kiến trên Hacker News
  • Dù tiết kiệm được khoảng 84~120 CAD mỗi năm, để chạy ứng dụng của chính mình trên điện thoại của chính mình hơn một tuần thì vẫn phải trả cho Apple 99 đô la mỗi năm, nên phần lớn khoản tiết kiệm có lẽ sẽ bị triệt tiêu

    • Phí nhà phát triển Apple này thuộc hàng vô lý nhất trong những việc Apple làm. Cũng không rõ hạ tầng lưu trữ ứng dụng và chi phí máy chủ có thật sự tốn đến 99 đô la hay không
      Khi mua một thiết bị, tôi muốn có cảm giác rằng mình sở hữu nó, nhưng Apple vẫn tiếp tục đẩy câu chuyện rằng “chúng tôi chỉ cho phép bạn dùng thiết bị này theo cách chúng tôi cho phép”. Rốt cuộc khách hàng dù trả đủ giá vẫn giống như đang thuê thiết bị từ Apple
      Tôi là người dùng Apple lâu năm, nhưng khó mà dứt khỏi mối quan hệ vừa yêu vừa ghét với công ty này
    • iPhone 8 có lỗ hổng bootrom checkm8 không thể vá, nên dù bài viết không nói đến, tác giả cũng có thể jailbreak để chạy phần mềm mình muốn mà không phải trả tiền cho Apple
      Lỗ hổng này từng là một thắng lợi lớn, và chỉ mới gần đây mới khép lại khi thiết bị dễ bị khai thác cuối cùng là iPad thế hệ 7 không nhận được bản cập nhật iPad OS 26
    • Tôi cũng nghĩ y như vậy. Nếu xét toàn bộ các nền tảng phát triển có thể chọn để làm kiểu hack thiết bị theo phong cách maker ngoài mục đích chính thức, iOS áp đảo ở vị trí tệ nhất
      Thực tế còn có cả đồ điện gia dụng cho phép xử lý phát triển và phân phối ứng dụng tự do hơn iPhone
    • Theo tôi biết thì chỉ khi đưa lên App Store mới phải trả tiền. Trước đây tôi từng làm ứng dụng cho iPhone nhưng chưa từng trả phí
    • Dù coi bản thân chiếc iPhone là miễn phí vì nó đã cũ, phần cứng năng lượng mặt trời và pin cũng tốn khoảng 1.000 đô la
  • Công nghệ thú vị, nhưng hoàn toàn không có mô tả về mục đích sử dụng thực tế nên toàn bộ hơi có cảm giác trừu tượng

    • Tôi muốn xem thêm về đoạn “phần thật sự khó là làm sao để iOS tiếp tục cho ứng dụng của tôi chạy, ngay cả khi nó không cho rằng ứng dụng đủ quan trọng để tiếp tục chạy”
    • Ví dụ mã của Vision framework và các liên kết trong mục “Software Resources” có vẻ là đủ. Nếu lười tự tìm hiểu, bạn cũng có thể đưa vào LLM để tạo cả ứng dụng
  • Sắp tới Apple sẽ thêm SpeechAnalyzer API, nhờ đó chuyển giọng nói thành văn bản cũng có thể chạy cục bộ, và nghe nói nhanh hơn Whisper
    https://developer.apple.com/videos/play/wwdc2025/277/
    https://www.macrumors.com/2025/06/18/apple-transcription-api...

    • Liên quan còn có https://github.com/finnvoor/yap
      Đây là CLI dùng Speech.framework của macOS 26 để phiên âm giọng nói ngay trên thiết bị
      Trong bài của MacStories, nó có vẻ nhanh hơn Whisper khoảng 2 lần, và vì không có mạng hay máy chủ dùng chung nên cảm nhận còn nhanh hơn
    • Nhanh hơn thì tốt, nhưng tôi tò mò chất lượng sẽ ra sao. Dù chậm hơn Whisper 3 gấp 10 lần mà chất lượng tốt hơn 5% thì tôi sẽ chọn phương án đó
  • Đây là một thử nghiệm và bài viết rất hay theo kiểu hacker, nhưng tôi muốn chỉ ra một mô thức phổ biến trên HN về việc giới kỹ thuật đang ngầm quảng bá điều gì thông qua hiệu ứng mạng hacker
    Mỗi khi có bài blog trên HN kiểu “dù đây là một nền tảng thù địch với hacker, tôi vẫn làm được ___, và giờ tôi có thể dùng thứ mình tạo ra nhưng lại bị trói hoàn toàn vào nền tảng đó”, hẳn Chúa hài đồng Linus sẽ rơi nước mắt
    Trường hợp này hơi đặc biệt, vì tác giả trong mục “Why This Actually Matters” đã đề cập đến giá trị hacker và xã hội hiếm khi được trình bày tốt như vậy

    • Tái sử dụng thiết bị cũ là việc tốt. Nếu khó chịu với nền tảng đóng thì có thể không mua iPhone, nhưng dù làm gì đi nữa, nhờ những dự án như thế này mà có thể cứu được vô số iPhone đời cũ khỏi bãi rác
    • Rất đồng cảm. Ví dụ hiện tôi đang dùng một ứng dụng Android cài qua Play Store, tôi thấy nó ở trang nhất và tiêu đề là “I developed and didn’t use ”
      Đáng tiếc là tôi quan tâm đến tính năng hơn framework, và từ sau khi cài, tôi cứ tự hỏi trong hàng trăm người đề xuất có bao nhiêu người thật sự đã chạy thứ có thể gọi là ứng dụng nhiều lỗi nhất trên điện thoại của tôi. Tôi đã nhiều lần tức giận gỡ nó để cố khắc phục vấn đề, và có vấn đề chỉ giải quyết được bằng cách cài sạch
      Điểm mấu chốt là triết lý hướng tới rất quan trọng, và việc đánh giá nó ở quy mô lớn là cực kỳ quan trọng
  • Tôi thấy khó hiểu là đang OCR cái gì. Tò mò không biết đang làm loại xử lý hình ảnh nào đến mức cần giải pháp như thế này

    • Có lẽ họ muốn thử framework OCR của Apple, và thứ họ có trong tay là chiếc iPhone đó. Tôi vào trang chủ blog để tìm bài giải thích họ xử lý gì nhưng không thấy. Có khi là quét toàn bộ sách tiểu thuyết chăng
  • Tôi vẫn còn dùng một chiếc iPhone 8, và nếu so với thiết bị Android cùng năm thì Android áp đảo iPhone. Đó là điện thoại giá rẻ dòng Motorola eX, nhưng khi tắt màn hình và phát video hoặc audio streaming qua Wi-Fi ra Bluetooth, nó chỉ tốn khoảng 15% pin mỗi giờ, trong khi iPhone tốn hơn 60%
    Cả hai cùng tuổi, nhưng iPhone có cảm giác lỗi thời, còn chiếc Motorola giá rẻ thì giống máy tính giữa thập niên 2010. Dù đã có tuổi, Android vẫn trụ được 2 tuần ở chế độ máy bay

    • Điều đó gần như chỉ có nghĩa là pin của iPhone 8 đã xuống cấp nhiều hơn so với chiếc Motorola giá rẻ. Nếu trong suốt vòng đời bạn dùng iPhone nhiều hơn thì chuyện đó rất dễ xảy ra, và đây không phải tiêu chí tốt để đo hiệu năng tương đối
  • “Dù đã để chạy liên tục hơn 1 năm, tình trạng pin của điện thoại vẫn khá ổn. Hiện còn 76% dung lượng”, nhưng khi tôi thử cắm iPhone SE liên tục thì pin đã phồng thành spicy pillow tới ba lần
    Lần đầu, Apple nói họ không động vào pin bị phồng và thay luôn cả thiết bị; sau đó tôi dùng bộ kit thay thế của bên thứ ba
    Nếu pin hầu như luôn ở mức 100% thì khó mà bền lâu. Điều tôi mong muốn nhất khi tái sử dụng điện thoại cũ là khả năng hoạt động mà không cần đụng đến pin, hoặc tính năng giữ pin ở mức 50%
    Các điện thoại Apple đời mới có tùy chọn giới hạn 80%, đó là một cải thiện, nhưng tôi không biết nó giúp được bao nhiêu. Hơn nữa, nếu không phải điện thoại đời mới thì ngay cả trên iOS mới nhất cũng không có tùy chọn đó

    • Chỉ cần cắm bộ sạc vào ổ cắm thông minh tương thích HomeKit, rồi tạo Shortcuts bật ổ cắm khi pin xuống 45% và tắt khi lên 55% là được
      Tất nhiên là cần có HomeKit hub
    • Phần lớn các thiết bị kiểu này không thể cung cấp dòng điện đỉnh tức thời cần nguồn ngoài, nên không thể hoạt động khi không có pin. Nếu CPU đột ngột xử lý một tác vụ tăng vọt, máy có thể tắt
      Tôi từng thấy một bản hack thay pin bằng siêu tụ điện
    • Khi chiếc MBP 2017 của tôi bị spicy pillow, Apple đã sửa giúp thiết bị tội nghiệp đó; nhân tiện họ cũng thay luôn bàn phím bị nguyền rủa và dán thêm thứ giống băng keo để gia cố các cổng USB-C đã lỏng
      Tuy nhiên họ không làm keo tản nhiệt, nên tôi phải tự làm, và đó là việc tôi không muốn động vào lần nữa. Dù vậy, nó có hiệu quả: khi tải nặng máy mát hơn khoảng 10°C và cũng nhanh hơn. Tôi vẫn nâng niu và dùng hằng ngày
    • Thật bực mình khi Apple không cung cấp chế độ bỏ qua pin đúng nghĩa, cũng không cho đặt giới hạn sạc
  • Một câu chuyện tuyệt vời. Việc Apple giúp những thiết bị cũ như thế này tiếp tục sống sót chưa được ghi nhận đủ
    Tôi cũng có một câu chuyện tương tự về việc tái sử dụng một chiếc OG iPhone SE cũ và trao cho nó đời sống mới
    https://samkhawase.com/blog/dumb-smartphone/

    • Tôi không hiểu lắm ý đó. Việc tìm một mục đích sử dụng mới cho iPad cũ mà không phải tốn quá nhiều công sức có vẻ là chuyện quá khó. Điều đó đã thay đổi rồi à?
    • Tôi hoàn toàn không đồng ý. Vì không thể cập nhật iOS và ứng dụng ngân hàng từ chối chạy trên phiên bản cũ, tôi đã phải bỏ chiếc iPhone 7
      Như đã thấy trong vụ Batterygate, Apple cũng sẵn sàng giới hạn hiệu năng điện thoại
  • Có lẽ tôi đã bỏ lỡ điều gì đó. Hàng nghìn người dùng được nói tới ở đây đến từ đâu? Có dịch vụ nào được cung cấp à?

    • Đúng vậy. Tác giả vận hành một website công khai cho phép OCR miễn phí các tệp đã tải lên
  • Để đối đầu với iPhone 8, tôi xin đưa ra Motorola MB525 “Defy”, Motorola MB526 “Defy+” và Samsung J3. Những thiết bị này đang được dùng làm camera xe kéo hỗ trợ Wi-Fi
    Điện thoại cung cấp Wi-Fi hotspot, và tôi xem hình ảnh từ camera thông qua đó. Khi nối xe kéo và kết nối vào mạng Wi-Fi, tôi có thể thấy chuyện gì đang xảy ra ở phía sau xe kéo
    Thiết bị cũ nhất trong danh sách này là sản phẩm năm 2010, và tất cả đều chạy Cyanogenmod (MB525, MB526) hoặc hậu duệ của nó là LineageOS (J3). Hai máy Motorola đã được thay pin, còn J3 thì quay lại dùng pin gốc
    Dù sao màn hình cũng chẳng nhìn thấy, và 2 trong 3 máy còn bị vỡ, nên tất cả đều hoạt động không cần màn hình. Android vẫn chạy tốt khi không có màn hình, và dùng như vậy còn tiêu thụ ít điện hơn một chút

    • Khá ấn tượng. Tôi thích việc trao đời sống mới cho thiết bị cũ và ngăn chúng trở thành rác thải điện tử. Đúng tinh thần hacker thực thụ