Как стать автором
Обновить

Как задача из классического сбора данных перешла в решение простенькой задачи MNIST. Или как я спарсил сайт ЦИК

Время на прочтение9 мин
Количество просмотров7.3K
Всего голосов 25: ↑23 и ↓2+21
Комментарии31

Комментарии 31

Я недавно на хабре видел решение по доступу к данным ЦИКа через их API

НЛО прилетело и опубликовало эту надпись здесь
Спасибо, прочитал статью с доступом по api
Работа интересная. Опыт полезный.
Но… А на самом деле API нет у ЦИКа?
На момент решения задачи не знал о существования api.
accuracy = 1.0000? Наконец-то нейросеть=человек!
А зачем вы все операции попиксельно производили, если Pillow всё это умеет?
Что именно вы имеете ввиду, не совсем понял?
Зачем вы перебираете в циклах пиксели, когда все операции с изображениями, которые у вас реализованы вручную, умеет библиотека, которую вы используете для работы с изображением?
Спасибо, принял во внимание.
tesseract такую капчу распознает довольно уверенно.
tesseract плохо работает с мелкими изображениями и с наклоненными у нее не всегда. Странно, что здесь нейросеть сразу с ходу с изображениями работает корректно. Мне приходилось даже не уже не мелкие цифры масштабировать, а потом обучать. Здесь же совсем крошечные, судя по картинке.
Интересно, не знал о таком инструменте, спасибо!
Момент разметки изображений в статье опущен или я что-то не понимаю и нейронка работает на магии?
Разметка была достаточно простая, цифры, которые нарезал раскидал по папкам с именами этих цифр
Только от 0 до 9, очень простая капча.

Увидел и опознал сразу знакомую капчу!
На ЦИК все субъектов была именно она. Чёрные понятные цифры на зелёном фоне.
Но да, докучала изрядно (реально ВСЯ навигация по сайту была через неё)

Да, пришлось ее побороть))
Что-то не строится модель (
На шаге train_data = X_train.reshape(X_train.shape[0], 10*10) пишет:
AttributeError: 'list' object has no attribute 'shape'

ps.
type(X_train)
<class 'list'>

А функция нарезки капч нарезает только первую цифру капчи. Итого из 1000 капч только 1000 цифр…
Да согласен, моя вина, забыл добавить кусок кода с преобразованием X_train в np.array
X_Train = np.array(X_Train)
y_train = np.array(y_train)
В следующей строке тоже ошибка?:
test_data = X_test.reshape(X_test.shape[0], 10*10)
AttributeError: 'list' object has no attribute 'reshape'

Однако, если по аналогии прописать:
X_test = np.array(X_test)
y_test = np.array(y_test)

То все равно вываливается:
 batch_input_shape = (batch_size,) + tuple(kwargs['input_shape'])
TypeError: 'int' object is not iterable


Кроме того, строку def mnist_make_model(10,10): не пропускает.
Скорее всего def mnist_make_model(x,y)?
Спасибо, функцию поправил.
def mnist_make_model(image_w: int, image_h: int):
    # Neural network model
    model = Sequential()
    model.add(Dense(image_w*image_h, activation='relu', input_shape=(image_h*image_h)))
    model.add(Dense(10, activation='softmax'))
    model.compile(loss='categorical_crossentropy', optimizer=RMSprop(), metrics=['accuracy'])
    return model

По поводу подготовки тестовых данных, после загрузки изображений из папок сразу преобразовать лист в np.array
X_Digit = np.array(X_Digit) 
y_digit = np.array(y_digit)
Эх, все равно не едет:
in mnist_make_model
    model.add(Dense(image_w*image_h, activation='relu', input_shape=(image_h*image_h)))

...
batch_input_shape = (batch_size,) + tuple(kwargs['input_shape'])
TypeError: 'int' object is not iterable


*X_Digit уже в np.array формируется в цикле: X_Digit.append(np.array(im2))
По поводу нарезки капчи, поправил статью, там цифры перезаписывались, в коде была ошибка.
Нарезка все равно нарезает только 1000 цифр вместо 5000.
А после приходит твит, который изменил мою жизнь

В реальности история с капчей имела продолжение — довольно неприятное для ее организатора. Не знаю, многие ли посетители Хабра заметили связанную с этим новость, поэтому копирую ее сюда:
МОСКВА, 30 сен — РИА Новости. Михаил Попов покинул по собственному желанию должность руководителя Федерального центра информатизации при ЦИК после претензий к появлению множественной капчи на сайтах с результатами выборов, сообщила председатель ЦИК Элла Памфилова.
По итогам единого дня голосования многие эксперты высказали претензии к появлению множественных проверок пользователей (капчи) на сайте с результатами выборов. Попов объяснил это необходимостью сохранять работоспособность сайта в условиях множественных атак. Памфилова поручила убрать множественную капчу с сайта.
Да, о ситуации с тем, что капча ушла я узнал уже во время сбора информации с сайта, она странным образом начала пропадать)
Из 100500 способов опубликовать данные так, чтобы ничего не падало, они выбрали один из самых неудобных. Логично.

@lexakudry

А вы могли бы и в этом году такую же модную парсилку сделать? :)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории