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.7.tar.gz (9.1 kB view details)

Uploaded Source

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

Hashes for sdamgia-api-0.1.7.tar.gz
Algorithm Hash digest
SHA256 9f0b8fc1b270618f4fb53376b26580c24a8adbb6738c845905590e7564bb70df
MD5 bfc0018977a35939e2322d1edc93495e
BLAKE2b-256 84655c2cd8ebd3fb4d6c6cea728ccf6765875bfa5e3ac4822431e03e7b163a1e

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