$tesseractOCR->recognize

Если вы обнаружили какие либо ошибки, недочеты и неудобства или другие незачеты в программе напишите нам об этом на этом форуме - мы бум исправлять
Ответить
stalin_alex
Сообщения: 19
Зарегистрирован: 03 фев 2021, 12:39

$tesseractOCR->recognize

Сообщение stalin_alex » 10 мар 2021, 00:32

Здравствуйте. Пробую использовать эту команду и обнаружил такой баг:
Раз через раз команда не даёт никакого ответа (может быть просто не удалось распознать или происходит какой-то сбой), но смысл в том, что при этом скрипт останавливается самостоятельно.
Ну, допустим не удалось распознать с первого раза, и в этом случае мы можем заключить команду в цикл, чтобы распознавание произошло со следующего раза, но этого не получается по причине того, что скрипт останавливается после считывания строки $test = $tesseractOCR->recognize("C:\\XWeb\\img\\2.jpg");
То есть не выдаётся никакой отчёт и ничего. просто считалась строка и остановился скрипт. нажимаем ещё раз "старт скрипта" и он норм отработал.. В следующий раз опять может остановиться. И такое происходит чаще чем нормальная отработка с распознаванием. Ниже скрины и пример кода:

То есть как видите по коду, после строки

Код: Выделить всё

$test = $tesseractOCR->recognize("C:\\XWeb\\img\\2.jpg");
как минимум должен быть ответ echo с $test = 0, однако ответа нет никакого и остановка...используя эту же картинку для распознавания, при последующих запусках скрипта - происходит норм отработка и распознавание

Код: Выделить всё

$browser->set_wait_params(0,0);

// задать масштаб
$browser->set_zoom(70);

$test = "0";

while(true)
{
	if ($test == "0")
	{
		echo "test = $test";
		echo "Распознаем : <br><br>";
		$test = $tesseractOCR->recognize("C:\\XWeb\\img\\2.jpg");
		echo "test = $test";
	}
        else 
       {
                 echo "test = $test"; 
                 break;
       }
}
Вложения
photo_2021-03-09_23-31-30.jpg
photo_2021-03-09_23-31-30.jpg (8.95 КБ) 3404 просмотра

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3047
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: $tesseractOCR->recognize

Сообщение bigfozzy » 10 мар 2021, 12:05

А можно картинку саму прислать, которая не распознается ?

+ попробуйте в конец скрипта добавить sleep(10);

может оно просто не успевает вывести до окончания работы скрипта.

stalin_alex
Сообщения: 19
Зарегистрирован: 03 фев 2021, 12:39

Re: $tesseractOCR->recognize

Сообщение stalin_alex » 10 мар 2021, 15:08

Да, спасибо sleep (1.0) исправил ситуацию.. если поставить меньше уже "троит". С 1.0 норм

stalin_alex
Сообщения: 19
Зарегистрирован: 03 фев 2021, 12:39

Re: $tesseractOCR->recognize

Сообщение stalin_alex » 15 мар 2021, 14:26

Ещё один вопрос.
ребят скажите где посмотреть свойства данной функции. То есть какие можно для неё задавать параметры.
К примеру у меня разгадан был текст "текст" спустя время появилась новая капча с текстом "Текст", но чуть чуть видоизменённая. Размер текста и другие помехи и функция не нашла м моей базе разгадок данный текст, потому что разгадан текст был в КАПС ЛОКЕ "ТЕКСТ".

использую такой код:

$textresult = $tesseractOCR->recognize "ПУТЬ К КАРТИНКЕ";

else if (strpos($textresult, "текст присутствует") !== false)
{
$answer= "наш ответ";
echo ("найден в текущей базе. Отправлен соответствующий ответ" .$answer);
}

В связи с тем, что tesseractOCR разгадал картинку в КАПСЛОКЕ, то "текст присутсвует" не подошёл, потому, что он был НЕ в КАПСЛОКЕ, не смотря на то, что текст присутствовал в разгаданном абзаце
Что посоветуете ребят?

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: $tesseractOCR->recognize

Сообщение Support » 15 мар 2021, 20:58

Параметры для команды можно посмотреть в шаблоне Human Emulator Studio\Templates\Objects\Vision\xhe_tesseractocr.php

// распознать картинку
function recognize($path,$language="rus+eng")  
Всё таки этот объект не заточен под работу с капчами, он больше для преобразования картинки с текстом непосредственно в текст.

stalin_alex
Сообщения: 19
Зарегистрирован: 03 фев 2021, 12:39

Re: $tesseractOCR->recognize

Сообщение stalin_alex » 15 мар 2021, 22:56

Следовательно, в случае распознавания текста в КАПС ЛОКЕ, то поиск "ключевые слова" необходимо дублировать в КАПСЛОКЕ тоже?
там как бы и сама капча такая, что она не обычная. Вопрос на картинке и надо внести ответ на вопрос.
Следовательно надо распознать текст, и сопоставить по ключевым словам ответ из массива ответов по ключевым словам.

Поэтому ключевое слово не в капс локе игнорируется.

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: $tesseractOCR->recognize

Сообщение Support » 16 мар 2021, 00:22

stalin_alex писал(а):
15 мар 2021, 22:56
Следовательно, в случае распознавания текста в КАПС ЛОКЕ, то поиск "ключевые слова" необходимо дублировать в КАПСЛОКЕ тоже?
там как бы и сама капча такая, что она не обычная. Вопрос на картинке и надо внести ответ на вопрос.
Следовательно надо распознать текст, и сопоставить по ключевым словам ответ из массива ответов по ключевым словам.

Поэтому ключевое слово не в капс локе игнорируется.
Если вам не важна регистрозависимость перед тем как сравнивать просто делайте весь текст strtolower или mb_strtolower и сравнивайте его с текстом в таком же регистре.

stalin_alex
Сообщения: 19
Зарегистрирован: 03 фев 2021, 12:39

Re: $tesseractOCR->recognize

Сообщение stalin_alex » 19 мар 2021, 01:13

bigfozzy писал(а):
10 мар 2021, 12:05
А можно картинку саму прислать, которая не распознается ?

+ попробуйте в конец скрипта добавить sleep(10);

может оно просто не успевает вывести до окончания работы скрипта.
Скажите пожалуйста, а можно ли в целях сокращения времени на sleep (ибо для меня важна скорость), установить какой - то цикл или иначе, чтобы переменная получила разгаданный текст, затратив столько времени, сколько нужно, а не с фиксированной паузой..?

Ведь из 5 раз тестов распознания текста - он распознается все 5 раз без sleep, а вот на шестой раз произойдёт то, что я описал в первом посте. Или наоборот первое распознавание не пройдёт, а все остальные попытки пройдут нормально. Но мне нужно стабильное распознавание с динамической паузой.

Дело в том , что если не произошло распознавание по отсутвии паузы, то весь дальнейший код не выполняется. Просто останавливается скрипт и всё. Вот что странно в работе распознавания.

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3047
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: $tesseractOCR->recognize

Сообщение bigfozzy » 20 мар 2021, 11:58

sleep тока нужен для вывода в панель отладки

Ответить