Если навскидку, то вероятно что-то не так с координатами, выбранными для анализа (вариант - добавить в конце подпрограммы перед "END_SUB" строчку "SCREENSHOTEX($x1,$y1, $x2,$y2, "Image_", 0)". Увидите, полностью ли в область анализа попало число (иначе, почему пропадает последняя цифра?), а также не попало ли что-то лишнее.
Судя по коду скрипта, букве взяться неоткуда, кроме как из образца "Letters\d.bmp" . Возможно, полное имя файла другое, но начинается определенно на "D". Если важны для анализа только цифры, то можете просто убрать это файл оттуда (первопричиной, вероятно, служит то, что 7 узкая, и анализируется также следующий знак, вместе с ней образующий эту картинку - например "7." читается как "7 Двоеточие").
Вообще, если формат строки известен заранее (где точки, где двоеточия в числе/дате предугадать не сложно) - можно оставить только 10 образцов (цифры 0-9), а двоеточия и точки расставлять вместо пробелов программно. Такой вариант позволит справляться с изменяющимся фоном (заменяем "-1" в "recognize(147,783, 219,809, -1, 100)" на цвет фона у картинок-образцов).