Skip to main content

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

sdamgia-api-0.1.4.tar.gz (8.7 kB view details)

Uploaded Source

File details

Details for the file sdamgia-api-0.1.4.tar.gz.

File metadata

  • Download URL: sdamgia-api-0.1.4.tar.gz
  • Upload date:
  • Size: 8.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.5.0.1 requests/2.22.0 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.7.6

File hashes

Hashes for sdamgia-api-0.1.4.tar.gz
Algorithm Hash digest
SHA256 a2cbbc1ced255850fe57c13f8ebe6188c79a758145837700695c49ad1feba14d
MD5 d11974b12fbe50878ab06e60b68b8280
BLAKE2b-256 dcf9a901cd43871229357e410f6feaf1cc5f404c00443f4985079953ece686e0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page