1 ポイント 投稿者 GN⁺ 2025-06-19 | 1件のコメント | WhatsAppで共有
  • 引き出しで眠る寸前だった iPhone 8 をSwiftUIベースのOCRサーバーに作り替え、Apple Visionで83,418件のリクエストと48GBの画像を1年以上処理した
  • システムはiPhone 8、Webサービス・APIルーティング用Mini PC、EcoFlow River 2 Pro 768Wh、220Wソーラーパネル、Tailscaleネットワークで構成される
  • 全体の電力使用量は1日あたり約 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 節約

システム構成と処理フロー

  • 全体構成は4つのデバイスとネットワークに分かれる
    • Mini PC: Webサーバー、画像処理サービス、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 = .accurate
    • usesLanguageCorrection = true
    • VNImageRequestHandlerCGImage を受け取りリクエストを実行
    • 認識結果は VNRecognizedTextObservation の最上位候補文字列を集めて返す
  • OCRはオンデバイスで実行されるため、API呼び出し、利用量制限、外部サーバーへの画像送信がない
  • 精度はテストした一部のクラウドサービスと比べても遜色ないレベル
  • Visionフレームワークの文字認識は時間とともに改善され、特に手書きや特殊なフォントで以前は失敗していた認識が動作するようになった

太陽光電源構成と季節ごとの運用

  • 電源機器は EcoFlow River 2 Pro 768Wh と220Wソーラーパネル
  • 実際の電力使用量はTP-Linkデータ基準で全体1日約 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はアプリが永遠に動き続けることを想定していないため、生存性とバッテリー保全のバランスが必要になる

ローカル優先処理とデバイス再活用

  • すべての画像はユーザーのデバイス内にとどまり、クラウドへのアップロードや第三者アクセスはない
  • 命綱になるほどの節約額ではないが、意味のあるコンピューティングワークロードを再生可能エネルギーで動かせることを示している
  • 引き出し行きになるはずだったiPhoneがOCRサーバーとして使われることで、電子廃棄物にならずに済んだ
  • すべての処理がクラウド上にある必要はなく、太陽光で動くローカルデバイスがデータを直接処理できる

参考リソース

1件のコメント

 
GN⁺ 2025-06-19
Hacker News のコメント
  • 年間で約84〜120カナダドル節約できたとしても、自分のスマホで自分のアプリを1週間以上実行するには Apple に毎年99ドルを払わなければならないので、ほとんど相殺されそう

    • この Apple 開発者手数料は、Apple がやっていることの中でもかなり理不尽な部類に入る。アプリのホスティングインフラとサーバー費用に本当に99ドルもかかるのかも疑問
      端末を買ったら自分のものだと感じたいのに、Apple は「この端末は私たちが許可する方法でだけ使わせてやる」という物語を押し通し続けている。結局、顧客は定価を払っても Apple から端末を借りて使っているようなもの
      古くからの Apple ユーザーだが、この会社との愛憎関係から抜け出すのは難しい
    • iPhone 8 にはパッチ不能な checkm8 ブートROM脆弱性があるので、記事には出てこないが、筆者は脱獄して Apple に費用を払わずに好きなソフトウェアを実行することもできたはず
      この脆弱性は大きな勝利で、最後の脆弱な端末だった第7世代 iPad が iPad OS 26 アップデートを受けられなくなったことで、最近ようやく終わりを迎えた
    • まったく同じことを思った。正規の用途外でメイカー的なデバイスハックをするために選べる開発プラットフォーム全体で見ると、iOS は圧倒的に最悪
      iPhone よりアプリ開発と配布を自由に扱える家電製品も実際にある
    • App Store に出すときだけお金を払えばよいと理解している。以前 iPhone 向けアプリを作ったことがあるが、費用を払ったことはない
    • iPhone 自体は古いので無料と見なすとしても、太陽光発電とバッテリーハードウェアにおよそ1000ドルかかる
  • 興味深い技術だが、実際の用途説明がまったくないので、全体がやや抽象的に感じる

    • 「本当に難しかったのは、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%良くなるなら、そちらを選ぶ
  • 見事なハッカー的試みと記事だが、技術者たちがハッカーのネットワーク効果によって暗黙のうちに何を宣伝しているのかについて、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 に出力しても1時間にバッテリーを15%ほど使う一方、iPhone は60%超を使う
    どちらも同じ年数だが、iPhone は体感的に旧式で、低価格の Motorola は2010年代半ばのコンピューターのように感じる。年数が経っているのに Android は機内モードで2週間持つ

    • それは iPhone 8 のバッテリーが低価格の Motorola より劣化しているという意味に近い。寿命の間に iPhone をより多く使っていたなら十分あり得るし、相対的な性能を測る良い基準ではない
  • 「1年以上ずっと動かし続けたのに、スマホのバッテリー状態はかなり良好だった。現在は容量76%だ」と言っていたが、iPhone SEを挿しっぱなしにしようとしたところ、バッテリーが3回もスパイシーピローになった。
    最初はAppleが膨張したバッテリーには触れないとして端末全体を交換し、その後はサードパーティ製の交換キットを使った。
    バッテリーがおおむね100%に留まるなら、長くは持ちにくい。古いスマホの再利用で一番欲しいのは、バッテリーに手を加えずに動作すること、またはバッテリーを50%に保つ機能だ。
    最新のApple製スマホには80%制限オプションがあり改善ではあるが、どれほど役立つかは分からない。しかも最新機種でなければ、最新のiOSでもそのオプションはない。

    • 充電器をHomeKit対応のスマートプラグに挿し、バッテリーが45%になったらプラグをオンにし、55%になったらオフにするショートカットを作ればよい。
      もちろんHomeKitハブが必要だ。
    • こうした端末の多くは、外部電源が必要な瞬間最大電流を供給できないため、バッテリーなしでは動作できない。CPUが瞬間的に跳ねる処理をすると、電源が落ちることがある。
      バッテリーをスーパーキャパシタに置き換えるハックは見たことがある。
    • 2017年のMBPでスパイシーピローが発生したときは、Appleがかわいそうな端末を直してくれ、そのついでに呪われたキーボードも交換し、緩くなったUSB-Cポートを補強するテープのようなものも貼ってくれた。
      ただしサーマルペーストはやってくれなかったので自分でやる必要があり、二度と手を出したくない作業だった。それでも効果はあり、負荷時に約10°C低くなって速度も上がった。今でも大事に毎日使っている。
    • Appleがまともなバッテリーバイパスモードを提供せず、充電上限の設定もできないようにしているのはもどかしい。
  • 素晴らしい話だ。Appleがこうした古い端末を生かし続けてくれる点は、十分に評価されていない。
    私にも、古い初代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は画面なしでもうまく動き、この使い方だと消費電力も少し抑えられる。

    • かなり印象的だ。古い端末に新しい命を与え、電子廃棄物になるのを防ぐのは好きだ。本当にハッカー精神にかなっている。