Денис писал(а):К сожалению, в общем случае никак. Я раньше решал такую задачу в два шага:
1. Последовательными заменами привожу список к некоему общему стандарту: например, заменяем "кв ", "[b]
Хакер писал(а):Баян же. Амед уже спрашивал подобное. К чему тогда пришли?
Roman Koff писал(а):ИИ на НС
qwertyhp писал(а):Номеру дома предшествует название улицы.
qwertyhp писал(а):Если же нужно оптическое распознавание (с рисунка) - то алгоритм сейчас разрабатывается. Правда, только для шрифтов, подобных "Areal".
qwertyhp писал(а):Если адреса в пределах одного города - взять список улиц города (по Москве есть, могу выложить)
'Эта пример конвертирует цветную картинку в черно-белую с коэффицентами принятыми в телевидении.
'На форме необходимо разместить кнопку и 2 PictureBox с именами pic1 и pic2 одинакового размера. Свойство ScaleMode у обоих надо выставить в 3-Pixel. В pic1 загрузите любое изображение и нажмите на кнопку.
Private Sub Command1_Click()
Dim B1 As Byte, B2 As Byte, b3 As Byte
Dim lColor&, x&, y&, Gray
Dim Gra
pic2.Cls
For x = 0 To pic1.ScaleWidth
For y = 0 To pic1.ScaleHeight
lColor = pic1.Point(x, y)
B1 = lColor And &HFF 'Красный
B2 = (lColor \ 256) And &HFF 'Зеленый
b3 = (lColor \ 65536) And &HFF 'Синий
Gray = B1 * 0.3 + B2 * 0.59 + b3 * 0.11
lColor = RGB(Gray, Gray, Gray)
pic2.PSet (x, y), lColor
Next y
DoEvents
Next x
End Sub
Select Case Tmp ' буква, возникшая в результате парсинга строки
' Tmp1 [2],[3] ' различные варианты прочтения латинского символа как кириллического
Case "a"
Tmp1 = "а"
Case "b"
Tmp1 = "б"
Tmp2 = "в"
Tmp3 = "6"
Case "c"
Tmp1 = "с"
Tmp2 = "ц"
Case "d"
Tmp1 = "д"
Case "e"
Tmp1 = "е"
Case "f"
Tmp1 = "ф"
Case "g"
Tmp1 = "г"
Tmp2 = "ж"
Case "h"
Tmp1 = "х"
Case "i"
Tmp1 = "и"
Case "j"
Tmp1 = "ж"
Case "k"
Tmp1 = "к"
Case "l"
Tmp1 = "л"
Tmp2 = "1"
Case "m"
Tmp1 = "м"
Case "n"
Tmp1 = "н"
Tmp2 = "п"
Case "o"
Tmp1 = "о"
Tmp2 = "0"
Case "p"
Tmp1 = "п"
Tmp2 = "р"
Case "q"
Tmp1 = ""
Case "r"
Tmp1 = "р"
Case "s"
Tmp1 = "с"
Case "t"
Tmp1 = "т"
Case "u"
Tmp1 = "и"
Tmp2 = "у"
Tmp3 = "ю"
Case "v"
Tmp1 = "в"
Case "w"
Tmp1 = "в"
Case "x"
Tmp1 = "х"
Case "y"
Tmp1 = "у"
Tmp2 = "ю"
Case "z"
Tmp1 = "з"
' для случая не слишком грамотных (вместо "сделать" - "зделать", и т.п.)
Tmp2 = "с"
End Select
qwertyhp писал(а):Список улиц Москвы выкладываю в архиве. Других объектов нет, но посмотрю в Сети.
А вот и не правда. Они уже тогда написали и XP и Win7, просто компьютеров, на которых оно бы запустилось тогда прсто не было. Начали они, собственно, с написания NT4, но поскольку работать системе было не на чем, её урезАли и урезАли. В итоге урезали до Windows 1.0, и система наконец запустилась. А исходный, но немного доработанный, вариант NT4 смог запуститься только на компьютерах в районе 2000ого года, откуда и название.qwertyhp писал(а):Странно, что вас, вероятно, не удивляет - как это Microsoft сразу не выпустила Windows XP для IBM XT, а начала с Windows 1.0? Вот точно также и в других случаях. От простого - к сложному.
А зачем этот код? Я что-то не уловил к чему оно тута...qwertyhp писал(а):Вот транслит плюс ошибки набора:
Private Function IL_CODE(ByVal txt As String) As String
Dim out_str As String
out_str = Replace(txt, Chr$(32), "")
out_str = Replace(out_str, "-", "")
out_str = Replace(out_str, ",", "")
out_str = Replace(out_str, ".", "")
out_str = Replace(out_str, Chr$(34), "")
out_str = Replace(out_str, "_", "")
out_str = Replace(out_str, "(", "")
out_str = Replace(out_str, ")", "")
out_str = Replace(out_str, "«", "")
out_str = Replace(out_str, "»", "")
out_str = Replace(out_str, "¹", "N") '<-- тут номер заменяем на N
IL_CODE = LCase$(out_str)
End Function
Antonariy писал(а):Если уничтожить все пробелы, то количество ошибок только увеличится.
Antonariy писал(а):Потомучтогладиолус.
улЛенинад26
IL_CODE("ул. Ленина д. 26") -> улленинад26
IL_CODE("ул Ленина Д 26") -> улленинад26
IL_CODE("УЛ ЛЕНИНА Д 26") -> улленинад26
do while not outstr = txt
out_str = Replace(txt, " ", " ")
loop
Сейчас этот форум просматривают: AhrefsBot, Yandex-бот и гости: 24