Если вы столкнулись с необходимостью перевести текст на десятках или сотнях изображений, ручной процесс через Google Translate может занять целый день. К счастью, есть способ автоматизировать задачу, даже если официальные инструменты вроде Google Cloud Translate больше не поддерживают функцию перевода изображений.
Расскажу, как настроить систему, которая сама загрузит изображения, запустит перевод и сохранит результаты. Вам не понадобятся навыки программирования — достаточно внимательно следовать инструкциям.
Подготовка к работе: что потребуется
Перед началом установите два компонента:
- Браузер Google Chrome (или другой, но скрипт настроен под Chrome).
- AutoHotkey V2 — бесплатная программа для автоматизации действий. Скачайте её с официального сайта (обратите внимание: нужна именно версия 2.0, так как скрипты для V1 не совместимы).
Далее создайте текстовый файл со списком путей к вашим изображениям. Например, если картинки лежат в папке «C:Фото», файл может выглядеть так:
C:Фотоизображение1.jpg
C:Фотоизображение2.png
D:Архивдокумент_2024.jpg
Сохраните его в удобном месте, например, «C:Спискимои_фото.txt». Важно: используйте расширение .txt и избегайте пробелов в именах папок (лучше «moi_foto» вместо «мои фото»).
Настройка скрипта для автоматизации
Скрипт на AutoHotkey будет имитировать действия человека: открывать браузер, загружать изображения, нажимать кнопки перевода и сохранять результат. Приведу два варианта — базовый и продвинутый.
Простой скрипт (без обработки ошибок):
#Requires AutoHotkey v2.0
urlGT := "https://translate.google.com/?sl=ja&tl=en&op=images" ; Замените ja на исходный язык, en — на целевой
fpImageList := "C:Спискимои_фото.txt"
msSleep1 := 1000 ; Пауза после открытия браузера
msSleep2 := 2000 ; Пауза после загрузки изображения
strFps := FileRead(fpImageList)
arrFps := StrSplit(strFps, "`n")
Run(urlGT), Sleep(msSleep1)
for strFp in arrFps {
strFp := Trim(strFp, "`r`n`"") ; Удаляем лишние символы
Send("{Enter}"), Sleep(100), Send("{Enter}"), Sleep(100) ; Открываем диалог выбора файла
Send(strFp), Send("{Enter}"), Sleep(msSleep2) ; Вводим путь к файлу
Send("+{Tab}"), Sleep(50), Send("+{Tab}"), Sleep(50) ; Переходим к кнопке «Скачать перевод»
Send("{Enter}"), Sleep(500) ; Сохраняем
Send("!{Left}"), Sleep(msSleep1) ; Возвращаемся назад (Alt+Left)
}
MsgBox("Готово!")
Что нужно изменить в коде:
- В строке
urlGT
заменитеsl=ja
на код исходного языка (например,ru
для русского),tl=en
— на целевой язык. - В
fpImageList
укажите путь к вашему списку изображений. - Если браузер открывается медленно, увеличьте
msSleep1
до 2000–3000.
Улучшенный скрипт (с проверкой ошибок):
#Requires AutoHotkey v2.0
; URL Google Translate с настройками языков (sl=исходный, tl=целевой)
urlGT := "https://translate.google.com/?sl=ja&tl=en&op=images"
; Путь к файлу со списком изображений (поддерживает относительные и абсолютные пути)
fpImageList := "C:Спискимои_фото.txt"
; Настройки временных интервалов (в миллисекундах)
msSleepLoad := 2000 ; Ожидание загрузки страницы
msSleepLoad2 := 1000 ; Дополнительное ожидание рендеринга
msSleepTL := 3000 ; Ожидание завершения перевода
msSleepDL := 1000 ; Ожидание скачивания файла
msSleepStdLong := 300 ; Стандартная длинная пауза
msSleepStdShort := 100 ; Короткая пауза
; Параметры обработки ошибок
numTries := 5 ; Количество попыток при ошибках
secWait := 5 ; Пауза между попытками (в секундах)
; Настройки папок
TargetSuffix := "Перевод" ; Суффикс для папки с переводами
A_Downloads := RegExReplace(A_Desktop, "Desktop$", "Downloads") ; Путь к папке загрузок
; Чтение списка файлов
strFps := FileRead(fpImageList)
arrFps := StrSplit(strFps, "`n")
Run(urlGT) ; Запуск браузера
OpenGT() ; Инициализация страницы
; Основной цикл обработки изображений
for strFp in arrFps {
strFp := Trim(strFp, "`r`n`"") ; Очистка пути
fileName := StrSplit(strFp, "\").Pop() ; Извлечение имени файла
fpTargetDir := RegExReplace(strFp, "\\" fileName "$","") "-" TargetSuffix ; Папка назначения
fpTargetDL := A_Downloads "\" fileName ; Временный путь скачивания
fpTarget := fpTargetDir "\" fileName ; Итоговый путь
; Пропуск уже обработанных файлов
if FileExist(fpTarget) = "" {
TranslateRun(strFp) ; Запуск перевода
n := 0
; Повторные попытки при ошибках
While (!FileDLMove(strFp, fpTargetDir, fpTargetDL, fpTarget)) && n < numTries {
Run(urlGT)
OpenGT()
TranslateRun(strFp)
n += 1
}
; Возврат на исходную страницу
Send("!{Left}") ; Alt+Left для навигации назад
OpenGT()
}
}
MsgBox("Перевод завершен!")
; Функция инициализации страницы перевода
OpenGT() {
n := 0
While (!WinWaitActive("Google Translate",, msSleepLoad/1000)) && (n < numTries) {
Run(urlGT)
n += 1
}
Sleep(msSleepLoad2)
Send("{Enter}"), Sleep(msSleepStdLong), Send("{Enter}")
}
; Функция выполнения перевода
TranslateRun(strFp) {
n := 0
; Открытие диалога выбора файла
While (!WinWaitActive("Open",, secWait)) && (n < numTries) {
Send("{Esc}"), Sleep(msSleepStdShort), Send("{Esc}")
Run(urlGT)
OpenGT()
n += 1
}
; Проверка успешного открытия диалога
if !(WinGetTitle("A") == "Open") {
MsgBox("Ошибка открытия диалога выбора файла")
ExitApp
}
; Ввод пути и запуск перевода
ControlSetText(strFp, "Edit1")
Send("{Enter}"), Sleep(msSleepTL)
; Навигация к кнопке скачивания
Send("+{Tab}"), Sleep(msSleepStdShort)
Send("+{Tab}"), Sleep(msSleepStdShort)
Send("{Enter}"), Sleep(msSleepDL)
}
; Функция перемещения файла
FileDLMove(strFp, fpTargetDir, fpTargetDL, fpTarget) {
try {
; Создание папки при необходимости
if DirExist(fpTargetDir) == ""
DirCreate(fpTargetDir)
; Перемещение файла из загрузок
FileMove(fpTargetDL, fpTarget, 0)
return true
} catch {
return false
}
}
Ключевые настройки:
TargetSuffix
— название папки, куда сохранятся переводы. Если исходная папка «C:Фото», переводы попадут в «C:Фото-Перевод».numTries := 5
— количество попыток при ошибке загрузки.secWait := 5
— пауза между попытками (в секундах).
Запуск и возможные проблемы
- Сохраните скрипт в файл с расширением .ahk (например, «translate_images.ahк»).
- Щёлкните по нему правой кнопкой мыши и выберите Run Script.
- Не перемещайте мышь и не используйте клавиатуру во время работы скрипта — это может сбить автоматизацию.
Если перевод не запускается:
- Убедитесь, что в браузере по умолчанию выбран Google Chrome.
- Проверьте, не блокирует ли антивирус AutoHotkey (временно отключите защиту).
- Увеличьте значения
msSleep1
,msSleep2
в коде, если компьютер медленный.
Совет: Перед обработкой всех изображений протестируйте скрипт на 2–3 файлах. Если всё работает, запускайте полный цикл.
Альтернативные методы
Если скрипт не подошёл, попробуйте:
- Google Drive + Документы: Загрузите изображения в Google Drive, откройте через Документы и используйте встроенный переводчик. Подходит для небольших объёмов.
- Мобильное приложение Google Translate: Снимайте фото через камеру, но это тоже ручной процесс.
Однако автоматизация через AutoHotkey остаётся самым эффективным методом для пакетной обработки. Если у вас возникнут сложности, напишите в комментариях — помогу разобраться!