Python модуль для взаимодействия с образовательным порталом СДАМ ГИА
Project description
SdamGIA Api
SdamGIA Api – Python модуль для взаимодействия с образовательным порталом СДАМ ГИА
Структура СдамГИА
Чтобы было проще понять, как устроена база заданий СдамГИА, предлагаю воспользоваться следующей схемой:
СдамГИА
└── Предмет (subject)
├── Каталог заданий (catalog)
│ └── Задание (topic)
│ └── Категория (category)
│ └── Задача (problem)
└── Тест (test)
└── Задача (problem)
У каждой задачи, категории или теста есть свой идентификатор. Задания тоже имеют номера, которые в свою очередь могут иметь такие значения как "Д1" или "C4". Этим они отличаются от идентификаторов.
Установка
$ pip3 install sdamgia-api
Установка зависимостей
Для поиска задач по тексту на изображении необходимо установить pytesseract:
$ pip3 install pytesseract
А также Tesseract-OCR
Обратите внимание, что для корректной работы нужен русский языковой пакет
Использование
Инициализация
from sdamgia import SdamGIA
sdamgia = SdamGIA()
Поиск задачи по ее идентификатору
subject = 'math'
id = '1001'
sdamgia.get_problem_by_id(subject, id)
{
'id': '1001',
'topic': '4',
'condition': {
'text': 'На экзамен вынесено 60 вопросов, Андрей не выучил 3 из них. Найдите вероятность того, что ему попадется выученный вопрос.',
'images': []
},
'solution': {
'text': 'Решение.Андрей выучил 60\xa0–\xa03\xa0=\xa057 вопросов. Поэтому вероятность того, что на экзамене ему попадется выученный вопрос равна\xa0Ответ: 0,95.',
'images': ['https://ege.sdamgia.ru/formula/svg/9f/9fbf55ab44a507fb47ba8a2666cd7644.svg']
},
'answer': '0,95',
'analogs': ['1001', '1002', '1003', '1004', '1005', '1006', '1007', '1008', '1009', '1010'],
'url': 'https://math-ege.sdamgia.ru/problem?id=1001'
}
Можно сгенерировать задачу в виде изображения:
path_to_img = '/imgs/problem.png'
sdamgia.get_problem_by_id(subject, id, path_to_img=path_to_img)
Поиск задач по запросу
subject = 'math'
request = 'Найдите количество'
sdamgia.search(subject, request)
['6407', '8795', '8799', '27501', '519508', '519534', '525371', '512436', '6401', '6421', '6427', '7321', '7325', '7801', '7803', '7807', '7809', '8037', '8039', '8045']
Поиск теста по его идентификатору
subject = 'math'
id = '1770'
sdamgia.get_test_by_id(subject, id)
# Возвращает список задач, входящих в тест
['77345', '28765', '77374', '27903', '26675', '27700', '77411', '27506', '27132', '28008', '26703', '99592']
Поиск категории по ее идентификатору
subject = 'math'
id = '1'
sdamgia.get_category_by_id(subject, id)
# Возвращает список задач, входящих в категорию
['77334', '323512', '501201', '509077', '509106']
Получение каталога
subject = 'math'
sdamgia.get_catalog(subject)
[
{
'topic_id': '1',
'topic_name': 'Простейшие текстовые задачи',
'categories': [
{'category_id': '174', 'category_name': 'Вычисления'},
{'category_id': '1', 'category_name': 'Округление с недостатком'},
{'category_id': '2', 'category_name': 'Округление с избытком'},
{'category_id': '249', 'category_name': 'Проценты'},
{'category_id': '5', 'category_name': 'Проценты и округление'}
]
},
{
...
}
]
Генерация теста
По умолчанию генерируется тест, включающий по одной задаче из каждого задания предмета.
Так же можно вручную указать одинаковое количество задач для каждого из заданий: {'full': <кол-во задач>}
Указать определенные задания с определенным количеством задач для каждого: {<номер задания>: <кол-во задач>, ... }
subject = 'math'
problems = {1: 1, 2: 2, 3: 4}
sdamgia.generate_test(subject, problems)
# Возвращает идентификатор сгенерированного теста
38299510
Обратите внимание, что в этом случае идентификатор задания - только науральное число. Т.е. если после задания 15 идет задание Д1, оно должно будет записываться как 16 задание.
Генерация pdf-версии теста
sdamgia.generate_pdf('math', '38299510', pdf='h')
https://math-ege.sdamgia.ru/pdf/1fe7d7d8408f8d5195fabfd8ab393d63.pdf
Список параметров:
subject: Наименование предмета
testid: Идентифигатор теста
solution: Пояснение
nums: № заданий
answers: Ответы
key: Ключ
crit: Критерии
instruction: Инструкция
col: Нижний колонтитул
pdf: Версия генерируемого pdf документа
По умолчанию генерируется стандартная вертикальная версия
h - горизонтальная версия
z - версия с крупным шрифтом
m - версия с большим полем
Поиск задач по изображению beta
С помощью sdamgia-api вы можете искать задачи по тексту на изображении. Например, на фотографии распечатки.
Для начала, необходимо указать путь к исполняемому файлу Tesseract-OCR:
sdamgia.tesseract_src = "C:/Program Files/Tesseract-OCR/tesseract.exe"
Теперь мы можем запустить поиск:
sdamgia.search_by_img('rus', 'Image.jpg')
# Возвращает список найденных задач
['12629', '14062', '2846', '2836', '2837', '2838', '2839', '2845', '2847', '7776', '10242', '874', '864', '865', '866', '867', '873', '2359', '456', '446', '447', '448', '449', '455', '2348', '7815', '691', '863', '14426', '7867', '1262', '1889', '6716', '6706', '6707', '6708', '6709', '6715', '6717', '8899', '8895', '8896', '8897', '8898', '8900', '4194', '4184', '4185', '4186', '4187', '4193', '4195', '30', '28', '29', '31', '37', '38', '2337', '676', '674', '675', '677', '683', '684', '2168', '1094', '1092', '1093', '1095', '1101', '1102', '2365', '6893', '6891', '6892', '6894', '6900', '6901', '6902', '599', '598', '600', '601', '607', '608', '2352', '1710', '1700', '1701', '1702', '1703', '1709', '2381', '3600', '3599', '3601', '3602', '3608', '3609', '3610', '8327', '8323', '8324', '8325', '8326', '8328', '950', '940', '941', '942', '943', '949', '2361', '11087', '11065', '1304', '1299', '1342', '1337', '1474', '1472', '1473', '1475', '1481', '1482', '2375', '105', '104', '106', '107', '113', '114', '2339', '181', '180', '182', '183', '189', '190', '2341', '257', '256', '258', '259', '265', '266', '1321', '2343', '333', '332', '334', '335', '341', '342', '2345', '380', '370', '371', '372', '373', '379', '2346', '532', '522', '523', '524', '525', '531', '2350', '656', '652', '759', '750', '751', '752', '753', '760', '2356', '789', '788', '790', '791', '797', '798', '2357', '844', '842', '988', '978', '979', '980', '981', '987', '2362', '997', '995', '1026', '1016', '1017', '1018', '1019', '1025', '2363', '1254', '1244', '1245', '1246', '1247', '1253', '2369', '1292', '1282', '1283', '1284', '1285', '1291', '2370', '7568']
Поиск может занять продолжительное время в зависимости от объема текста и количества найденных задач
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file sdamgia-api-0.1.7.tar.gz.
File metadata
- Download URL: sdamgia-api-0.1.7.tar.gz
- Upload date:
- Size: 9.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.10.1 pkginfo/1.5.0.1 requests/2.22.0 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.7.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9f0b8fc1b270618f4fb53376b26580c24a8adbb6738c845905590e7564bb70df
|
|
| MD5 |
bfc0018977a35939e2322d1edc93495e
|
|
| BLAKE2b-256 |
84655c2cd8ebd3fb4d6c6cea728ccf6765875bfa5e3ac4822431e03e7b163a1e
|