OCR в Java через Tesseract!
Когда нужно вытащить текст с картинки подключаем
Пример кода:
🔥 Работает для сканов, чеков, экранок; при низком качестве помогает предобработка (ч/б, контраст, кроп по зоне текста).
👉 Java Ready | #практика
Когда нужно вытащить текст с картинки подключаем
Tesseract черезTess4J. Даём путь к tessdata и языку, подаём изображение и на выходе получаем распознанную строку.Пример кода:
import net.sourceforge.tess4j.Tesseract;
Tesseract t = new Tesseract();
t.setDatapath("tessdata");
// папка с .traineddata
t.setLanguage("eng");
// язык модели
String text = t.doOCR(new
java.io.File("image.png"));
// входное изображение
System.out.println(text);
// вывод результата
🔥 Работает для сканов, чеков, экранок; при низком качестве помогает предобработка (ч/б, контраст, кроп по зоне текста).
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11❤4👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Помогает прокачать логику, синтаксис и понимание языка через практику. Внутри — сотни задач разного уровня: от базовых конструкций до более сложных кейсов, которые часто встречаются на собеседованиях и в работе. Решаешь задачи и сразу проверяешь себя, закрывая пробелы в знаниях.
Оставляю ссылочку: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍8🔥8
Шифрование текста
Когда нужно спрятать текст, можно использовать базовое шифрование. Шифр Цезаря — один из самых простых способов: каждая буква сдвигается на фиксированное количество символов.
Исходный текст и ключ (сдвиг):
Создаём результат:
Проходим по каждому символу:
Шифруем только буквы:
Выводим зашифрованный текст:
Обратное преобразование (расшифровка):
Вывод расшифрованного текста:
После этого легко перейти к более сложным вещам: пароли, хеширование, реальные алгоритмы.
👉 Java Ready | #совет
Когда нужно спрятать текст, можно использовать базовое шифрование. Шифр Цезаря — один из самых простых способов: каждая буква сдвигается на фиксированное количество символов.
Исходный текст и ключ (сдвиг):
String text = "hello world";
int shift = 3;
Создаём результат:
StringBuilder result = new StringBuilder();
Проходим по каждому символу:
for (char c : text.toCharArray()) {Шифруем только буквы:
if (Character.isLetter(c)) {
char base = Character.isLowerCase(c) ? 'a' : 'A';
char enc = (char) ((c - base + shift) % 26 + base);
result.append(enc);
} else {
result.append(c);
}
}Выводим зашифрованный текст:
System.out.println("Зашифрованный: " + result);Обратное преобразование (расшифровка):
StringBuilder decoded = new StringBuilder();
for (char c : result.toString().toCharArray()) {
if (Character.isLetter(c)) {
char base = Character.isLowerCase(c) ? 'a' : 'A';
char dec = (char) ((c - base - shift + 26) % 26 + base);
decoded.append(dec);
} else {
decoded.append(c);
}
}
Вывод расшифрованного текста:
System.out.println("Расшифрованный: " + decoded);После этого легко перейти к более сложным вещам: пароли, хеширование, реальные алгоритмы.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍5🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
Если нужно быстро понять сложную тему, эта нейросеть автоматически превращает длинный текст, видео или статью в структурированную mind-map. Полезно для подготовки к экзаменам, изучения новой темы или планирования проектов.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9❤8👍5
Морской бой — делаем консольную игру!
Сделаем рабочую версию: поле 5×5, корабли расставлены, игрок стреляет по координатам. Игра сообщает “попал/мимо” и заканчивается, когда все корабли уничтожены.
Создаём поле и размещаем корабли:
Функция вывода поля:
Запускаем игровой цикл:
Проверяем выстрел:
Логика попадания:
Финал игры:
Дальше можно прокачать игру добавив случайную генерацию кораблей и подсчёт ходов.
👉 Java Ready | #практика
Сделаем рабочую версию: поле 5×5, корабли расставлены, игрок стреляет по координатам. Игра сообщает “попал/мимо” и заканчивается, когда все корабли уничтожены.
Создаём поле и размещаем корабли:
int[][] field = {
{0,1,0,0,0},
{0,1,0,1,0},
{0,0,0,1,0},
{1,0,0,0,0},
{0,0,1,0,0}
};
boolean[][] shots = new boolean[5][5];
int ships = 5;Функция вывода поля:
void print() {
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if (shots[i][j])
System.out.print(field[i][j] == 1 ? " X " : " * ");
else
System.out.print(" . ");
}
System.out.println();
}
}Запускаем игровой цикл:
var sc = new java.util.Scanner(System.in);
while (ships > 0) {
print();
System.out.print("Введите координаты (строка и столбец 1-5): ");
int r = sc.nextInt() - 1;
int c = sc.nextInt() - 1;
Проверяем выстрел:
if (r < 0 || r >= 5 || c < 0 || c >= 5 || shots[r][c]) {
System.out.println("Ошибка ввода!");
continue;
}
shots[r][c] = true;Логика попадания:
if (field[r][c] == 1) {
System.out.println("Попал!");
ships--;
} else {
System.out.println("Мимо!");
}
}Финал игры:
System.out.println("Все корабли уничтожены! Победа!");
sc.close();Дальше можно прокачать игру добавив случайную генерацию кораблей и подсчёт ходов.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍4🔥4
Схема иллюстрирует типовую архитектуру AI-агента: от обработки пользовательского запроса до формирования финального ответа через механизм выбора и подключения инструментов (skills).
На картинке — полный пайплайн работы AI-агента. По сути, это схема того, как LLM превращается в управляемого агента с инструментами.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9❤6👍5
This media is not supported in your browser
VIEW IN TELEGRAM
Основное внимание уделено современным фичам: модулям, var, pattern matching, records, sealed classes и др. Материал подаётся в компактном формате с примерами кода, что позволяет быстро разобраться в обновлениях языка и понять, как применять их на практике.
Оставляю ссылочку: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥9❤8
Работа с многострочными строками часто превращается в хаос из пробелов и переносов. Метод indent позволяет централизованно управлять отступами и форматировать вывод без лишнего кода.
В сочетании с другими методами обработки строк можно легко привести текст к нужному виду: выровнять, очистить или подготовить для логов и отображения.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12❤4👍4
Например,
ArrayList даёт быстрый доступ по индексу, но медленно вставляет элементы в середину, а HashMap обеспечивает почти мгновенный поиск по ключу.На картинке — основные структуры данных из Java Collections: списки, очереди, множества и мапы, а также их особенности.
Сохрани, чтобы не потерять!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥9❤8
This media is not supported in your browser
VIEW IN TELEGRAM
Это полноценный учебный курс по Java, где материал подаётся последовательно и с упором на практику. Внутри разобраны основные темы: синтаксис, ООП, коллекции, работа с файлами, обработка исключений и базовые принципы разработки. Теория сопровождается примерами и заданиями, поэтому можно закреплять знания на практике.
Оставляю ссылочку: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤6🔥5
Будильник со звуком
Можно сделать простой будильник, который ждёт нужное время и включает звук.
Задаём время будильника:
Проверяем текущее время в цикле:
Сравниваем время:
Проигрываем звук (системный):
Или свой звук:
Сообщение о срабатывании:
Дальше можно развивать эту тему, добавлять GUI, и другие функции что бы превратить этот код в полноценный проект
👉 Java Ready | #совет
Можно сделать простой будильник, который ждёт нужное время и включает звук.
Задаём время будильника:
LocalTime alarm = LocalTime.of(7, 30);
Проверяем текущее время в цикле:
while (true) {
LocalTime now = LocalTime.now();Сравниваем время:
if (now.getHour() == alarm.getHour()
&& now.getMinute() == alarm.getMinute()) {
Проигрываем звук (системный):
Toolkit.getDefaultToolkit().beep();
Или свой звук:
AudioInputStream audio = AudioSystem.getAudioInputStream(new File("alarm.wav"));
Clip clip = AudioSystem.getClip();
clip.open(audio);
clip.start();Сообщение о срабатывании:
System.out.println("Будильник сработал!");
break;
}
Thread.sleep(1000);
}Дальше можно развивать эту тему, добавлять GUI, и другие функции что бы превратить этот код в полноценный проект
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍5🔥5
Это заменяет проверки if (obj != null) и даёт богатую декларативную обёртку. Создавай через .of(), проверяй через .isPresent(), обрабатывай с .map(), и забудь про NullPointerException.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍3🔥3🤝3