Comments 30

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

Оно?

<Подозревака моуд>А было ли задачей получение данных для анализа данных?</Подозревака моуд>
Работа интересная. Опыт полезный.
Но… А на самом деле API нет у ЦИКа?
А зачем вы все операции попиксельно производили, если Pillow всё это умеет?
Зачем вы перебираете в циклах пиксели, когда все операции с изображениями, которые у вас реализованы вручную, умеет библиотека, которую вы используете для работы с изображением?
tesseract плохо работает с мелкими изображениями и с наклоненными у нее не всегда. Странно, что здесь нейросеть сразу с ходу с изображениями работает корректно. Мне приходилось даже не уже не мелкие цифры масштабировать, а потом обучать. Здесь же совсем крошечные, судя по картинке.
Момент разметки изображений в статье опущен или я что-то не понимаю и нейронка работает на магии?
Разметка была достаточно простая, цифры, которые нарезал раскидал по папкам с именами этих цифр

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

Что-то не строится модель (
На шаге 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))
По поводу нарезки капчи, поправил статью, там цифры перезаписывались, в коде была ошибка.
А после приходит твит, который изменил мою жизнь

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