아이폰 8, 태양광 기반 Vision OCR 서버로 다시 태어남
(terminalbytes.com)- 서랍에 묵을 뻔한 iPhone 8을 SwiftUI 기반 OCR 서버로 바꿔, Apple Vision으로 83,418건의 요청과 48GB 이미지를 1년 넘게 처리함
- 시스템은 iPhone 8, 웹 서비스·API 라우팅용 Mini PC, EcoFlow River 2 Pro 768Wh, 220W 태양광 패널, Tailscale 네트워크로 구성됨
- 전체 전력 사용량은 하루 약 1.2kWh이며, 태양광 입력은 여름 150~220W 피크에서 겨울 5~20W 수준까지 계절에 따라 크게 달라짐
- 연속 운용 뒤 iPhone 배터리 상태는 76% 로 남았고, 바쁜 날에는 1,000건 이상을 처리했지만 iOS 백그라운드 제약과 열 관리는 별도 대응이 필요함
- 클라우드 OCR 대신 로컬 처리를 택해 요청당 비용과 외부 서버 업로드를 없앴고, 연간 84~120 CAD 전기요금 절감과 전자폐기물 감소 효과도 얻음
오래된 iPhone 8을 OCR 서버로 전환
- 개인 이미지 처리 프로젝트는 매일 수백 장의 이미지를 자동 분류하며, OCR 처리는 원래 Mac에서도 실행 가능했음
- 사용하지 않던 iPhone 8과 캠핑용으로 구매한 EcoFlow River 2 Pro를 결합해 태양광 기반 OCR 서버로 바꿈
- OCR 처리는 블로그와 별개의 사이드 프로젝트에 쓰임
- 1년 넘는 운용 결과는 다음과 같음
- 83,418건 OCR 요청 처리
- 48GB 이미지 데이터 처리
- 바쁜 날 1,000건 이상 요청 처리
- iPhone 배터리 상태 76%
- 연간 전기요금 84~120 CAD 절감
시스템 구성과 처리 흐름
- 전체 구성은 네 가지 장치와 네트워크로 나뉨
- Mini PC: 웹 서버, 이미지 처리 서비스, Plex 서버, 기타 서비스 실행
- iPhone 8: 창가에서 SwiftUI 앱으로 OCR 처리와 실시간 대시보드 담당
- EcoFlow power station: iPhone과 Mini PC에 오프그리드 전력 공급
- Tailscale network: 장치 간 연결 담당
- 이미지 처리 서비스가 OCR 대상 이미지를 iPhone으로 보내면, iPhone이 Apple Vision으로 텍스트를 인식한 뒤 결과를 다시 전송함
- iPhone 대시보드는 처리 통계와 서버 상태를 보여주며, 예시 UI에는
Requests Today,Total Processed,Avg Processing Time,Success Rate, 배터리 상태,Server running on port 8080이 포함됨 - Google Analytics 4도 통합돼 대시보드에 총 사용자 139,917명, 이번 달 17,643명, 평균 세션 6분 28초, 현재 활성 사용자 11명이 표시됨
Apple Vision 기반 iOS OCR 앱
- iOS에서 서버를 만들 때 가장 까다로운 부분은 앱을 계속 실행되게 유지하는 것이었음
- OCR 핵심은 Vision 프레임워크의
VNRecognizeTextRequest임recognitionLevel = .accurateusesLanguageCorrection = trueVNImageRequestHandler가CGImage를 받아 요청 수행- 인식 결과는
VNRecognizedTextObservation의 최상위 후보 문자열을 모아 반환
- OCR은 온디바이스에서 수행되므로 API 호출, 사용량 제한, 외부 서버 이미지 전송이 없음
- 정확도는 테스트한 일부 클라우드 서비스와 견줄 만한 수준임
- Vision 프레임워크의 텍스트 인식은 시간이 지나며 개선됐고, 특히 손글씨와 특이한 폰트에서 이전에 실패하던 인식이 동작하게 됨
태양광 전력 구성과 계절별 운용
- 전력 장비는 EcoFlow River 2 Pro 768Wh와 220W 태양광 패널임
- 실제 전력 사용량은 TP-Link 데이터 기준으로 전체 하루 약 1.2kWh임
| 구성 요소 | 유휴 전력 | 처리 부하 | 비고 |
|---|---|---|---|
| iPhone 8 OCR Server | 0.5~1W | 2~5W | 효율적임 |
| Mini PC | 15W | 25~30W | Plex, Archive Warriors 포함 |
| 전체 일일 소비 | 약 1.2kWh | 가변 | TP-Link 데이터 기준 |
- 계절에 따라 태양광 성능은 크게 달라짐
- 여름: 150~220W 피크 입력, 배터리 충전까지 가능한 지속 운용
- 봄·가을: 20~60W 평균, 태양광과 배터리 혼합 운용
- 겨울: 운이 좋으면 5~20W, 대부분 배터리 전력이며 런타임은 15~20시간
- River 2 Pro의 배터리 관리 시스템은 충전 곡선을 관리하며, 장치에 단순히 전력을 밀어 넣는 방식이 아님
- 캐나다의 추운 아침에는 처리 시간이 느려졌고, iPhone은 약간 따뜻할 때 OCR을 더 빠르게 처리했음
비용 계산과 클라우드 OCR 비교
- 초기 비용은 다음과 같음
- EcoFlow River 2 Pro: 599 CAD, 원래 캠핑용으로 구매
- 220W 태양광 패널: 180 CAD
- 케이블과 마운팅 하드웨어: 약 50 CAD
- 추가 태양광 투자: 약 230 CAD
- 실제 EcoFlow 데이터 기준 월 소비량은 5월 37.4kWh, 4월 45.8kWh였음
- 전기요금으로 환산한 절감액은 연간 약 84~120 CAD이며, 투자 회수 기간은 약 2~3년임
- 클라우드 OCR 서비스는 보통 1,000건당 1.00~1.50 CAD를 청구함
- 83,000건 이상 처리량을 클라우드 OCR로 처리했다면 83~125 CAD 비용이 들었을 것으로 계산됨
- 로컬 태양광 구성은 요청당 비용이 없고, 이미지를 외부 서버로 보내지 않음
1년 운용에서 드러난 안정성과 제약
- iPhone 8은 1년 넘게 연속 실행됐고, 지속적인 워크로드에도 성능 저하가 뚜렷하지 않았음
- iOS 백그라운드 처리는 예상보다 잘 동작했지만, 적절한 구성이 필요했음
- Background App Refresh 사용
- HTTP 서버가 정기 요청에 응답하도록 유지
- 최소한의 위치 서비스 사용
- 태양광 전력의 간헐성에 대응하기 위해 전력소는 저전력 장치인 iPhone을 우선하도록 설정됨
- 배터리가 낮아지면 Mini PC는 정상 종료됨
- iPhone은 필요하면 단독으로 몇 시간 동안 기본 OCR 요청을 처리할 수 있음
- 직사광선과 연속 처리는 열 스로틀링을 만들 수 있어, 그늘 확보와 공기 흐름 개선, 고온 보고 시 요청을 줄이는 처리를 추가함
- iOS는 앱이 영원히 실행되는 것을 원하지 않기 때문에, 계속 살아 있는 상태와 배터리 보존 사이의 균형이 필요함
로컬 우선 처리와 장치 재활용
- 모든 이미지는 사용자의 장치 안에 머물며, 클라우드 업로드나 제3자 접근이 없음
- 생명 유지 수준의 절감액은 아니지만, 의미 있는 컴퓨팅 워크로드가 재생에너지로 동작할 수 있음을 보여줌
- 서랍에 들어갈 예정이던 iPhone이 OCR 서버로 쓰이면서 전자폐기물로 전환되지 않음
- 모든 처리가 클라우드에 있어야 하는 것은 아니며, 태양광으로 구동되는 로컬 장치가 데이터를 직접 처리할 수 있음
참고 리소스
- EcoFlow River 2 Pro 768Wh: 사용한 전력소
- EcoFlow River 2 Pro와 220W 태양광 패널 번들: 실제 운용 구성과 같은 조합
- 200W 접이식 휴대용 태양광 패널: 이미 전력소가 있을 때 쓸 수 있는 유사 패널
- iPhone 8 이상과 iOS 13+가 있으면 Vision 프레임워크를 사용할 수 있음
- Apple Vision Framework Documentation: OCR 구현 문서
- Background App Refresh Guide: iOS 앱을 백그라운드에서 유지하는 문서
- SwiftUI HTTP Server Examples: HTTP 서버 구현 예시
- TP-Link Kasa Smart Plugs: 실제 전력 소비 모니터링 도구
- EcoFlow 앱: River 2 Pro 내장 모니터링 도구
- GearScouts.com: 전력소와 아웃도어 장비 가격 비교 도구
댓글과 토론
Hacker News 의견들
-
연간 약 84~120 CAD를 아껴도, 자기 폰에서 자기 앱을 일주일 이상 실행하려면 Apple에 매년 99달러를 내야 해서 대부분 상쇄될 듯함
- 이 Apple 개발자 수수료는 Apple이 하는 일 중 가장 터무니없는 축에 듦. 앱 호스팅 인프라와 서버 비용으로 정말 99달러가 드는지도 의문임
기기를 사면 내가 소유한다고 느끼고 싶은데, Apple은 “우리가 허용하는 방식으로만 이 기기를 쓰게 해준다”는 서사를 계속 밀고 있음. 결국 고객은 정가를 내고도 Apple에서 기기를 빌려 쓰는 셈임
오래된 Apple 사용자지만 이 회사와의 애증 관계를 떨치기 어렵다 - iPhone 8에는 패치 불가능한 checkm8 부트롬 취약점이 있어서, 글에는 안 나오지만 작성자는 탈옥해서 Apple에 비용을 내지 않고 원하는 소프트웨어를 실행할 수도 있었음
이 취약점은 큰 승리였고, 마지막 취약 기기였던 7세대 iPad가 iPad OS 26 업데이트를 받지 못하면서 최근에야 끝남 - 똑같은 생각이 들었음. 정식 용도 밖의 메이커식 장치 해킹을 하려고 고를 수 있는 개발 플랫폼 전체를 놓고 보면, iOS는 압도적으로 최악임
iPhone보다 앱 개발과 배포를 더 자유롭게 다룰 수 있는 가전제품도 실제로 있음 - App Store에 올릴 때만 돈을 내면 되는 것으로 알고 있음. 예전에 iPhone용 앱을 만들어 봤지만 비용을 낸 적은 없음
- iPhone 자체는 오래됐으니 공짜로 본다 해도, 태양광과 배터리 하드웨어에 대략 1천 달러가 듦
- 이 Apple 개발자 수수료는 Apple이 하는 일 중 가장 터무니없는 축에 듦. 앱 호스팅 인프라와 서버 비용으로 정말 99달러가 드는지도 의문임
-
흥미로운 기술이지만 실제 용도 설명이 전혀 없어서 전체가 다소 추상적으로 느껴짐
- “진짜 어려운 부분은 iOS가 내 앱을 계속 실행할 만큼 중요하다고 판단하지 않아도, 계속 돌아가게 만드는 것이었다”는 부분을 더 보고 싶음
- Vision framework 코드 예시와 “Software Resources” 섹션의 링크면 충분해 보임. 직접 파악하기 귀찮다면 LLM에 넣어서 전체 애플리케이션을 만들 수도 있음
-
곧 Apple이 SpeechAnalyzer API를 추가하면서 음성-텍스트 변환도 로컬에서 가능해질 예정이고, Whisper보다 빠르다고 함
https://developer.apple.com/videos/play/wwdc2025/277/
https://www.macrumors.com/2025/06/18/apple-transcription-api...- 관련해서 https://github.com/finnvoor/yap도 있음
macOS 26의 Speech.framework를 써서 기기 내 음성 전사를 하는 CLI임
MacStories 글에서는 Whisper보다 약 2배 빠른 것처럼 보였고, 네트워크나 공유 서버가 없으니 체감상 더 빠름 - 더 빠른 건 좋은데 품질은 어떨지 궁금함. Whisper 3보다 10배 느려도 품질이 5% 좋아진다면 그쪽을 택하겠음
- 관련해서 https://github.com/finnvoor/yap도 있음
-
훌륭한 해커식 시도와 글이지만, 기술자들이 해커 네트워크 효과로 암묵적으로 무엇을 홍보하는지에 대한 HN의 일반적 패턴을 짚고 싶음
“해커에게 적대적인 플랫폼인데도 ___를 해냈고, 이제 내가 만든 걸 쓸 수 있지만 그 플랫폼에 완전히 묶이게 된다”는 HN 블로그 글이 나올 때마다 아기 예수 Linus가 눈물을 흘릴 듯함
이번 경우는 조금 묘한데, 글쓴이가 “Why This Actually Matters” 섹션에서 보기 드물게 좋은 해커적·사회적 가치를 다루고 있기 때문임- 오래된 기기를 재활용하는 건 좋음. 닫힌 플랫폼이 거슬리면 iPhone을 사지 않으면 되지만, 무엇을 하든 이런 프로젝트 덕분에 매립지로 갈 수많은 구형 iPhone을 구할 수 있음
- 정말 공감함. 예를 들어 지금 Play Store를 통해 설치한 Android 앱을 쓰고 있는데, 프런트 페이지에서 발견했고 제목은 “I developed and didn’t use ”였음
안타깝게도 나는 프레임워크보다 기능에 더 관심이 있는데, 설치한 뒤로 수백 명의 추천자 중 몇 명이나 내 폰에서 가장 버그가 심한 앱이라고 부를 만한 걸 실제로 실행해 봤는지 계속 궁금했음. 문제를 고치려고 여러 번 화나서 지웠고, 어떤 문제는 클린 설치로만 해결되기도 했음
핵심은 지향하는 철학이 중요하고, 그것을 규모 있게 평가하는 일이 매우 중요하다는 것임
-
무엇을 OCR하는 건지 혼란스러움. 이런 해법이 필요할 만큼 어떤 이미지 처리를 하는 건지 궁금함
- Apple OCR 프레임워크를 써보고 싶었고, 손에 있던 게 그 iPhone이었을 것 같음. 블로그 홈으로 가서 무엇을 처리하는지 설명한 글을 찾아봤지만 못 찾았음. 모든 소설책을 스캔하는 건가 싶음
-
아직 쓰고 있는 iPhone 8이 있는데, 같은 연식의 Android 기기와 비교하면 Android가 iPhone을 압도함. Motorola eX 계열 저가형 폰인데, 화면을 끄고 Wi-Fi 스트리밍 영상이나 오디오를 Bluetooth로 내보내도 한 시간에 배터리를 15% 정도 쓰는 반면 iPhone은 60% 넘게 씀
둘 다 같은 나이지만 iPhone은 체감상 구식이고, 저가형 Motorola는 2010년대 중반 컴퓨터처럼 느껴짐. 연식이 있는데도 Android는 비행기 모드에서 2주를 버팀- 그건 iPhone 8의 배터리가 저가형 Motorola보다 더 열화됐다는 뜻에 가까움. 수명 동안 iPhone을 더 많이 썼다면 쉽게 그럴 수 있고, 상대적 성능을 재는 좋은 기준은 아님
-
“1년 넘게 계속 돌렸는데도 폰 배터리 상태가 꽤 괜찮았다. 현재 76% 용량이다”라고 했지만, iPhone SE를 계속 꽂아두려 해봤더니 배터리가 세 번이나 스파이시 필로우가 됐음
처음에는 Apple이 부풀어 오른 배터리는 건드리지 않는다며 기기 전체를 교체했고, 이후에는 서드파티 교체 키트를 썼음
배터리가 대체로 100%에 머문다면 오래 버티기 어려움. 오래된 폰 재활용에서 가장 바라는 건 배터리를 건드리지 않고 동작하거나, 배터리를 50%로 유지하는 기능임
최신 Apple 폰에는 80% 제한 옵션이 있어 개선이긴 하지만 얼마나 도움이 되는지는 모르겠음. 게다가 최신 폰이 아니면 최신 iOS에서도 그 옵션이 없음- 충전기를 HomeKit 호환 스마트 플러그에 꽂고, 배터리가 45%가 되면 플러그를 켜고 55%가 되면 끄는 단축어를 만들면 됨
물론 HomeKit 허브가 필요함 - 이런 기기 대부분은 외부 전원이 필요한 순간 최대 전류를 제공하지 못해서 배터리 없이 동작할 수 없음. CPU가 순간적으로 튀는 작업을 하면 꺼질 수 있음
배터리를 슈퍼커패시터로 대체하는 해킹은 본 적 있음 - 2017 MBP에서 스파이시 필로우가 생겼을 때는 Apple이 불쌍한 기기를 고쳐줬고, 그 김에 저주받은 키보드도 바꾸고 헐거워진 USB-C 포트를 보강하는 테이프 같은 것도 붙여줬음
다만 서멀 페이스트는 안 해줘서 직접 해야 했고, 다시는 손대고 싶지 않은 작업이었음. 그래도 효과는 있어서 부하 시 약 10°C 더 시원해지고 속도도 빨라짐. 아직도 아끼며 매일 쓰고 있음 - Apple이 제대로 된 배터리 우회 모드를 제공하지 않고, 충전 한도 설정도 못 하게 하는 점이 답답함
- 충전기를 HomeKit 호환 스마트 플러그에 꽂고, 배터리가 45%가 되면 플러그를 켜고 55%가 되면 끄는 단축어를 만들면 됨
-
멋진 이야기임. Apple이 이런 오래된 기기들을 계속 살아 있게 해주는 점은 충분히 인정받지 못함
나도 오래된 OG iPhone SE를 재활용해 새 생명을 준 비슷한 이야기가 있음
https://samkhawase.com/blog/dumb-smartphone/- 그 말은 잘 이해가 안 됨. 많은 수고를 들이지 않고 오래된 iPad의 새 용도를 찾는 건 지나치게 어려운 일처럼 느껴짐. 그게 바뀌었나?
- 전혀 동의하지 않음. iOS를 업데이트할 수 없고 은행 앱이 구버전에서 동작을 거부해서 iPhone 7을 포기해야 했음
Apple은 Batterygate에서 보였듯이 기꺼이 폰 성능도 제한함
-
뭔가 놓친 건지도 모르겠음. 여기서 말하는 수천 명의 사용자는 어디서 오는 건가? 제공하는 서비스가 있는 건가?
- 맞음. 작성자는 업로드한 파일을 무료로 OCR할 수 있는 공개 웹사이트를 운영함
-
iPhone 8에 맞서 Motorola MB525 “Defy”, Motorola MB526 “Defy+”, Samsung J3를 내놓겠음. 이 기기들은 Wi-Fi 지원 트레일러 카메라로 쓰고 있음
폰이 Wi-Fi 핫스팟을 제공하고, 그걸 통해 카메라 이미지를 봄. 트레일러를 연결하고 Wi-Fi 네트워크에 접속하면 뒤쪽 트레일러에서 무슨 일이 일어나는지 볼 수 있음
이 목록에서 가장 오래된 기기는 2010년 제품이고, 모두 Cyanogenmod(MB525, MB526)나 그 후속인 LineageOS(J3)를 실행함. Motorola들은 배터리를 교체했고 J3는 원래 배터리로 돌아감
화면은 어차피 보이지도 않고 3대 중 2대는 깨져 있어서 모두 화면 없이 동작함. Android는 화면 없이도 잘 돌아가고, 이렇게 쓰면 전력도 조금 덜 먹음- 꽤 인상적임. 오래된 기기에 새 생명을 주고 전자 폐기물이 되는 걸 막는 걸 좋아함. 진짜 해커 정신에 맞음