
Это история о том, как я превратил свой старый iPhone 8 в OCR-сервер на солнечных батареях, используя фреймворк Apple и зарядную станцию EcoFlow River 2 Pro. Он месяцами напролёт работает в режиме 24/7, обрабатывая тысячи изображений на полностью автономном питании.
За год с лишним мой сервер обработал 83 418 запросов на распознавание текста (OCR) и 48 ГБ изображений, используя только фреймворк Apple Vision и возобновляемую энергию. Большинство людей после апгрейда закидывают свои старые iPhone в ящик. Но не я. Я превратил свой телефон в сервер, который экономит мои деньги, работая полностью автономно.
Мог ли я просто запустить этот сервер на своём маке, как нормальный человек? Конечно же. Но разве это весело?
Коротко
Конфигурация:
iPhone 8 с приложением на SwiftUI, поддерживающим Apple Vision OCR.
EcoFlow River 2 Pro (768 Вт/ч) + солнечная панель 220 Вт (GearScouts).
Мини-ПК, обрабатывающий веб-сервисы и маршрутизацию API.
Сеть Tailscale, объединяющая всё.
Показатели, спустя 1+ года:
83 418 OCR-запросов и 48 ГБ изображений обработано.
1000+ запросов в загруженные дни.
Батарея телефона после интенсивной работы сохранила 76% ёмкости.
$84-120 CAD экономии на электричестве в год.
Основные выводы:
Apple Vision не уступает по точности облачным службам.
Старое железо на удивление уверенно справляется с серверными нагрузками.
При правильном управлении батареей солнечной энергии вполне хватает.
При больших масштабах локальная обработка выигрывает у облачных решений в стоимости, попутно обеспечивая конфиденциальность.
Зачем я вообще на это пошёл?
Как было бы поступить логично
У меня есть личный проект по обработке большого количества изображений, который ежедневно пропускает через себя сотни картинок, автоматически разбивая их по категориям. Любой рассудительный человек запустил бы обработку OCR на своём Mac — Apple Vision прекрасно работает в macOS.
Как поступил я
Но я не рассудителен. Я вижу прекрасный iPhone 8 и думаю: «Знаешь, что тебе нужно? Вторая жизнь в виде обработчика изображений на солнечной батарее». В периоды между туристическими выездами моя EcoFlow River 2 Pro всё равно лежала без дела, так что переключение имеющегося OCR-сервера на солнечное питание стало его естественной эволюцией.
Неожиданные выгоды
Возможность мониторить информационную панель в реальном времени прямо на подоконнике, продолжая любоваться птицами за окном.
Автономное питание для личных проектов.
Реальная экономия, которая со временем только растёт.
Отличный повод для беседы, когда приходят гости.
Финансовая выгода невелика, но ощутима. К примеру, в мае расход составил 37.4 кВт⋅ч ($7.21), в апреле 45.8 кВт⋅ч ($8.82), то есть за год получается прилично.
«Практично ли это? Не уверен. Круто ли? Однозначно».
Подробная конфигурация
Вот мой мудрёный конфиг:
1. Мини-ПК, на котором работает веб-сервер, сервис обработки изображений, сервер Plex и разные другие сервисы.
2. iPhone 8, восседающий на подоконнике. На нём запущено приложение SwiftUI, которое отвечает за обработку OCR и выступает информационной панелью.
3. Зарядная станция EcoFlow поддерживает автономную работу обоих устройств.
4. Сеть Tailscale обеспечивает органичную связь всех компонентов.
Рабочий поток изящен и прост. Сервис обработки изображений отправляет эти изображения на телефон для оптического распознавания символов с помощью фреймворка Vision. Телефон обрабатывает текст, отправляет его обратно и выводит на информационную панель итоговую статистику. Я же всё это время блаженно наблюдаю за прекрасными птицами в окно, преисполненный самодовольства.
Аппаратная часть: свет превращается в вычисления
Выбор зарядной станции и практические тесты
Я не покупал EcoFlow River 2 Pro специально для этого проекта. Приобрёл я её, так как поверил, что стану одним из любителей кемпингов, который много живёт на природе и нуждается в портативном питании. Хотя пока я по-прежнему больше остаюсь «домашним котом с уличными амбициями». Но моя импульсивная покупка всё же не оказалась обречена собирать пыль.

Дельный совет: если займётесь поиском портативных зарядных станций, то GearScouts.com предлагает прекрасную функцию сравнения цен, которая позволит сэкономить время.
Потребление энергии и её выработка
Компонент |
В простое |
В работе |
Примечание |
OCR-сервер на базе iPhone 8 |
0.5-1 Вт |
2-5 Вт |
Поразительная энергоэффективность |
Мини-ПК (несколько сервисов) |
15 Вт |
25-30 Вт |
Включает Plex, Archive Warriors |
Общее потребление в сутки |
~1.2кВт⋅ч |
Переменное |
На основе фактических данных с TP-Link |
Эффективность сбора солнечной энергии по сезонам:
Лето: 150-220 Вт в пике. Обеспечивает бесперебойную работу при заряжающейся батарее.
Осень/весна: 20-60 Вт в среднем. Работа от солнца/батареи.
Зима: 5-20 Вт в лучшем случае. Преимущественно работа от батареи (15-20 часов).
Ёмкость станции в 768 кВт⋅ч обеспечивает прекрасный запас с учётом непредсказуемой канадской погоды. Система управления батареями в этой станции заслуживает отдельной похвалы — она не просто подаёт ток на устройства, но и грамотно регулирует кривые заряда.
Создание серверного OCR-приложения под iOS
Создание сервера на iOS может показаться сложной задачей, но в Apple проделали всю основную работу. Самым трудным было убедить iOS в важности моего приложения, чтобы система не прерывала его выполнение.

Apple Vision Framework: невоспетый герой
Фреймворк Apple Vision воистину впечатляет и совершенно недооценён. В то время, как все были одержимы ChatGPT и облачными сервисами OCR, в Apple по тихой выпустили локальное решение для OCR, которое работает быстро, точно и полностью на устройстве.
Вот его основной код обработки:
import Vision
import UIKit
func processImage(_ image: UIImage, completion: @escaping (String?) -> Void) {
guard let cgImage = image.cgImage else {
completion(nil)
return
}
let request = VNRecognizeTextRequest { request, error in
guard let observations = request.results as? [VNRecognizedTextObservation] else {
completion(nil)
return
}
let recognizedText = observations.compactMap { observation in
observation.topCandidates(1).first?.string
}.joined(separator: "\n")
completion(recognizedText)
}
request.recognitionLevel = .accurate
request.usesLanguageCorrection = true
let handler = VNImageRequestHandler(cgImage: cgImage, options: [:])
try? handler.perform([request])
}
По точности Vision не уступает некоторым облачным сервисам, плюс всё обрабатывает локально. Никаких вызовов API, никаких ограничений на использование, никаких рисков конфиденциальности.
Информационная панель и аналитика SwiftUI
Информационная панель — самое интересное. Мне нужно было, чтобы она красиво смотрелась на подоконнике и показывала статистику в реальном времени:
struct DashboardView: View {
@StateObject private var server = OCRServer()
@State private var stats = ProcessingStats()
var body: some View {
VStack(spacing: 20) {
Text("OCR Server Status")
.font(.title)
.fontWeight(.bold)
HStack {
StatCard(title: "Requests Today", value: "\(stats.requestsToday)")
StatCard(title: "Total Processed", value: "\(stats.totalProcessed)")
}
HStack {
StatCard(title: "Avg Processing Time", value: "\(stats.avgProcessingTime)ms")
StatCard(title: "Success Rate", value: "\(stats.successRate)%")
}
BatteryView(percentage: UIDevice.current.batteryLevel)
Text("Server running on port 8080")
.font(.caption)
.foregroundColor(.secondary)
}
.padding()
}
}
Я люблю вникать в данные, поэтому интегрировал Google Analytics 4. Панель показывает общее число пользователей — 139 917, число пользователей за текущий месяц — 17 643, среднюю продолжительность сеанса — 6:28 и число активных пользователей — 11. Создаётся ощущение, что у меня на подоконнике информационная панель крохотного дата-центра.
Сложности с организацией солнечного питания
Запитывание электроники от солнечной энергии кажется простой затеей, пока не столкнёшься с погодными реалиями Канады. У нас бывает всё, что угодно — от жарких солнечных деньков (максимум трёх) до месяцами затянутого неба, когда солнечные панели оказываются не полезнее шоколадного чайника.
Сезонная стратегия и управление батареей
В итоге я выработал оптимальную схему, основанную на погоде:
Лето: солнечной энергии хватает с лихвой, и ещё остаётся на зарядку других устройств.
Осень/весна: смешанное использование солнечной энергии и батареи под внимательным контролем.
Зима: питание преимущественно от аккумулятора с периодическими подпитками от солнца.
Батарея телефона вывозит такой режим достаточно хорошо. Спустя год с лишним постоянной работы, она сохранила 76% изначальной ёмкости. Во многом это заслуга системы управления батареями в зарядной станции.

И вот одно неожиданное открытие: в слегка нагретом состоянии (но не горячем) телефон быстрее выполняет распознавание текста. То есть в прохладные утренние часы скорость обработки падает, чего я бы никогда не заметил при питании от сети.
Анализ затрат на солнечное и сетевое питание
Вложения и текущие расходы
Изначальные вложения:
EcoFlow River 2 Pro: $599 CAD (покупалась для туризма).
Солнечная панель на 220 Вт: $180 CAD.
Кабели, монтажное оборудование: ~$50 CAD.
Дополнительные вложения в конфигурацию солнечной батареи: ~$230 CAD
Ежемесячная экономия: исходя из фактических данных EcoFlow, которые показывают потребление в диапазоне 37,4 — 45,8 кВт⋅ч, я экономлю примерно $84-120 CAD в год. Итого период окупаемости около 2-3 лет.
Сравнение с облачными OCR-сервисами
Облачные сервисы распознавания текста обычно берут по $1.00-1.50 за 1 000 запросов. То есть обработка 83 000 обращений обошлась бы мне в $83-125 CAD, плюс это всё же отправка изображений на сторонние серверы, так что тут ещё возникает угроза конфиденциальности.
Мой же сетап с солнечной панелью не требует оплаты запросов и при этом полностью конфиденциален.
Что я уяснил за год
Надёжность
Используемое оборудование крайне надёжно. Телефон больше года проработал без остановки и держится бодрячком. Несмотря на постоянную нагрузку, ощутимого падения производительности не наблюдается.
Фоновая обработка в iOS работает лучше, чем я ожидал — нужно лишь найти подход. Суть в правильном использовании фонового обновления приложений и отправке регулярных запросов для поддержания активности сервера.
Фреймворк Vision постепенно дорабатывают. Те операции распознавания текста, которые раньше проваливались, теперь выполняются успешно, в частности, это касается рукописных текстов и необычных шрифтов.
Типичные проблемы и их решения
Перебои с солнечной энергией: я настроил зарядную станцию так, чтобы она отдавала приоритет телефону (меньший потребитель энергии) и мягко отключала Мини-ПК, когда заряд батареи на исходе. В случае чего телефон также может без подпитки обрабатывать простые OCR-запросы в течение нескольких часов.
Компенсация нагрева: прямой солнечный свет вкупе с постоянной нагрузкой ведут к троттлингу. Я добавил тень, улучшил обдув и реализовал механизм смарт-обработки, который сокращает число запросов, когда телефон сообщает о перегреве.
Ограничения фоновой обработки iOS: iOS следит за тем, чтобы приложения не работали бесконечно. Я использую фоновое обновление приложений, минимальный сервис определения местоположения и поддерживаю активность HTTP-сервера запросами. Приходится обеспечивать тонкий баланс между поддержанием работы всего сетапа и экономией батареи.
Почему всё это важно
Помимо очевидной крутизны, мой проект демонстрирует несколько важных принципов:
Акцент на конфиденциальности. Все изображения остаются у меня на устройствах. Никакой выгрузки в облако, никакого стороннего доступа. В эпоху, когда уже всё отправляется куда-то на чужой компьютер, истинная локальная обработка выглядит революционной.
Энергонезависимость. Несмотря на то, что экономия не радикальная, важен сам принцип. Мой пример подтверждает, что вполне весомые вычислительные нагрузки можно выполнять полностью за счёт возобновляемой энергии, даже в зонах с суровым климатом.
Сокращение электронных отходов. Этому телефону был уготован долгий ящик. Теперь же он служит продуктивным элементом в моей экосистеме устройств. Сколько старых девайсов можно было бы пустить в полезное дело вместо того, чтобы плодить электронные отходы?
Локальные вычисления. Не всё должно происходить в облаке. Порой наилучшее решение находится прямо перед тобой, питается от Солнца и обрабатывает данные локально, сохраняя полную конфиденциальность.
Теперь эта конфигурация служит наглядной демонстрацией для тех гостей, которым интересны возобновляемые источники энергии и локальные вычисления. Да и в целом мне реально нравится, что я могу мониторить статистику работы сервера прямо на окне, параллельно любуясь птицами, которые прилетают ко мне на кормушки.
Ресурсы
Дам ориентиры на случай, если вам вдруг захочется собрать нечто подобное.
Оборудование
EcoFlow River 2 Pro — зарядная станция, которую использую я.
Renogy 100W Solar Panel — аналог моей конфигурации.
Любой 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 app — встроенный инструмент мониторинга для River 2 Pro.
GearScouts.com — сравнение цен на зарядные станции и уличное оборудование.
Комментарии (5)
Zara6502
28.09.2025 09:05я думаю не проблема в факте использования старого оборудования, проблема в области применения. вот мне не нужен OCR в таких объемах, как и 99% населения, и что делать? )
Bardakan
28.09.2025 09:05статья фактически называется "OCR-сервер из iPhone". Только какой же это сервер из айфона, если ему еще отдельный мини-пк нужен? А мини-пк сейчас выпускают сравнительно мощные
Gorthauer87
А там же по идее ограничения, что самописное по раз в неделю надо переподписывать и перезаливать?
kalapanga
Вроде есть какие-то способы кое как это автоматизировать, но всё равно гемморой.
Отсутствие возможности писать приложения исключительно "для себя любимого" без всяких App Store в устройствах от Apple очень расстраивает.