очень много времени прошло, но надеюсь ещё остались кто поможет.
у меня только такой вариант работает. И проблема именно в том, что когда у меня чисто например 30543, то он показывает 3. если 29000, покажет 29, а на числа 23456 - всё нормально, то есть на 0, он не работает, вернее он умножает на 0 и порядок  пропускается получается...
#name "Распознавание чисел"
// Author: Vint
// Version: 1.1 (30.01.2013)
// Результат возвращается в $res если не найдено $res=-1
// Только целые числа. Максимум 10 разрядов. Расположение цифр равномерное.
// Вариант скрипта с последовательным перебором разрядов
// Хотел обойтись без текстовых файлов, только переменные
 
 
//====== переменные которые задаются 1 раз если всего один шрифт ====
//если в скрипте будет искаться несколько наборов шрифтов, то задавать каждый раз при вызове
$sdvig=10						// сдвиг, чуть меньше чем ширина 1 цифры с отступом
$pref="textures\digitt_"					// префикс имён файлов с цифрами
 
 
//====== переменные которые задаются при вызове поиска ====
//если место поиска всего одно, задавать только один раз
$field_x1=497							// поле под число, координата X1
$field_y1=1008							// поле под число, координата y1
$field_x2=615							// поле под число, координата X2
$field_y2=1035						// поле под число, координата y2
//====== внутренние переменные  ====
$razr_max=0							// максимальная разрядность числа
$xmin=5000
$res=-1									// очищаем результат
$i=0                		// очищаем результат
 
 
 
//================== начало ====================================================
FOR ($obhod, $obhod<10)	// очищаем результат
   GOSUB(sdvig_razryada)
END_CYC
 
GETSCREEN($field_x1,$field_y1,$field_x2,$field_y2)
COLORMODE(7)
SCREENSHOT
FOR ($i, $i<10)					// ищем самую левую цифру
   IF_PICTURE_IN ($field_x1,$field_y1,$field_x2,$field_y2, STRCONCAT($pref,$i,".bmp"),-1,80)
			//LOGWRITE (STRCONCAT($pref,$i,".bmp"))
      IF($_return1<$xmin)
         $xmin=$_return1
         INC($razr_max)
         $res1=$i
         IF($res1=10)		// учитываем что 10-я картинка это 0
            $res1=0
            
            
         END_IF
      END_IF
   END_IF
END_CYC
IF($xmin=5000)
   LOGWRITE ("число не найдено")
   GOTO(endfindnumber)
END_IF
 
$field_x1=$xmin+$sdvig
$perebor=1
WHILE($perebor>0)
   $razr_temp=$razr_max
   FOR ($i,$i<11)
      IF_PICTURE_IN ($field_x1,$field_y1,$field_x1+INT($sdvig*1.3),$field_y2, STRCONCAT($pref,$i,".bmp"),-1,90)
         $field_x1=$_return1+$sdvig
         IF($i<11)
            INC($razr_max)
            GOSUB(sdvig_razryada)
            IF($res1=10)		// учитываем что 10-я картинка это 0
               $res1=1
            END_IF
            
         END_IF
         IF($i=11)					// проверка если нашли маркер конца ...11.bmp, то конец
            $perebor=0
         END_IF
         $i=11              // выходим из цикла
      END_IF
   END_CYC
   IF(($razr_temp=$razr_max) | ($razr_max=10))	// проверка если не нашли или уже 10 разрядов, то конец
      $perebor=0
   END_IF
END_CYC
 
// подсчитываем
$res=$res1+$res2*10+$res3*100+$res4*1000+$res5*10000+$res6*100000+$res7*1000000+$res8*10000000+$res9*100000000+$res10*1000000000
LOGWRITE ("res1:  ",$res1)
LOGWRITE ("res2:  ",$res2)
LOGWRITE ("res3:  ",$res3)
LOGWRITE ("res4:  ",$res4)
LOGWRITE ("res5:  ",$res5)
LOGWRITE ("res6:  ",$res6)
LOGWRITE ("res7:  ",$res7)
LOGWRITE ("res8:  ",$res8)
LOGWRITE ("res9:  ",$res9)
LOGWRITE ("res10:  ",$res10)
LOGWRITE (STRCONCAT($res1,$res2,$res3,$res4,$res5,$res6,$res7,$res8,$res9,$res10,))
endfindnumber:
LOGWRITE ("Найдено число:  ",$res)
HINTPOPUP("Найдено число:  ",$res)
HALT
 
 
//==============================================================================
SUB(sdvig_razryada)
   $res10=$res9
   $res9=$res8
   $res8=$res7
   $res7=$res6
   $res6=$res5
   $res5=$res4
   $res4=$res3
   $res3=$res2
   $res2=$res1
   $res1=$i
END_SUB
//==============================================================================