Otwórz aplikację w przeglądarce — nie wymaga instalacji ani logowania.
Albo pobierz plik i otwórz go podwójnym kliknięciem; działa również offline. Jeśli strona pobierania nie wyświetla pliku, wybierz ikonkę pobierania po prawej stronie.
Chcesz zrobić wersję dla swojej specjalizacji albo masz pytania? Skontaktuj się ze mną.
The application and the questions are in Polish. Documentation below is in English.
A cleaned, validated and topic-indexed database of 4920 questions from twenty-one years of the Polish State Specialty Examination (PES) in endocrinology: 41 sessions, spring 2006 to spring 2026, together with the pipeline that produced it and a study application built on top of it.
| If you are… | start here |
|---|---|
| preparing for the PES and want to study | the app, no installation |
| a clinician or researcher wanting to reuse the data | data/README.md, then docs/taxonomy.md |
| interested in how it was built | docs/methodology.md, then src/ |
If you want to create your own database/app for your own specialty, or have questions, feel free to contact me.
The questions themselves are public information published by CEM and by the Naczelna Izba Lekarska. What this repository adds is everything needed to make them usable: recovery of the 2856 questions whose answer options had been destroyed in transit, reconstruction of 480 questions that existed only as scans, a 28-category topic index mapped to a standard textbook, and an audit trail showing what was verified and how.
Nothing here is clinical guidance. Questions date back to 2006 and reflect the state of
practice at the time of each examination. See NOTICE.md.
Where CEM published item analysis, each question shows difficulty, discrimination, the percentage of candidates choosing each option, and point-biserial correlation per option. The interface is in Polish, as is the source material.
Filtering by any of the 41 sessions and 28 topic categories, with the question count for each. By default a category returns only questions for which it is the primary topic.
Examination mode: 120 questions from a single session, a countdown timer, and no answer preview until the attempt is finished.
Preparing for a specialty examination from past exams is complicated. The questions are difficult to access or paywalled. Applications often lack useful features, have their own answers different than originally provided by CEM and often contain explanations with no information about who have written them or disclosure if they were generated by AI.
The requirement that drove the project: after reading a chapter of Interna Szczeklika, a user should be able to answer every question in the database belonging to that chapter. That is what made a topic taxonomy necessary and what set the accuracy bar for it. The application should make the studying experience better and should allow for a free, easy to run experience without any subscription fees or paywalls.
data/ the bank, its schema, the taxonomy, and psychometrics without question text
src/ the pipeline: extraction, OCR, tagging, quality assurance
docs/ methodology, taxonomy rationale, OCR validation, quality assurance
reports/ published output of the audits and the manual verification samples
app/ the study application, a single self-contained HTML file
Start with data/README.md for the data format,
docs/methodology.md for how it was built, and
app/pes-endo.html, which opens in a browser and needs nothing else.
| Sessions | Questions | Acquisition | Item statistics |
|---|---|---|---|
| 2006–2017 | 2880 | web, CEM | yes |
| 2018–2020 | 720 | text PDF, NIL release | no |
| 2021–2022 | 480 | scans + OCR, NIL release | no |
| 2023–2026 | 840 | web, CEM | yes |
3703 questions carry CEM's published item analysis: difficulty, discrimination, answer distribution and point-biserial correlation for each option. Twenty questions annulled by CEM are marked as such and carry no substituted key.
Every question carries one to three topic tags from a closed set of 28, inspired by chapters of Interna Szczeklika B01-IV.
In the 2006–2017 material the answer options had been concatenated into the question
text with no structural markers. They were recovered by locating A. through E. in
ascending order, accepting a marker only where preceded by a sentence boundary. That
rule prevents strings such as "prawdziwe są odpowiedzi A i C." inside an option from
being read as a new option.
Verified by round-trip: reassembling question and options reproduced the original source text character-for-character for all 2880 questions.
The 2021–2022 scans carry no text layer. Text was recovered using Tesseract LSTM, Tesseract LSTM on a binarised and upscaled image, Tesseract's legacy engine, and Windows.Media.Ocr, then reconciled by vote.
Answer keys were read visually from the scans, never by OCR, because OCR reliably
confused C with E and E with B in the key tables. 222 corrections were applied. The
recurring failure classes are documented in
docs/ocr-validation.md.
Weighted dictionary rules, matched diacritic-insensitively and on stems to handle
Polish inflection, with a hit in the question stem weighted three times a hit in an
answer option. Validated against an independent TF-IDF/k-NN classifier. Sampled error
rate is on the order of 1–2%. See docs/taxonomy.md.
Internal consistency checks cannot detect an error that is internally consistent, so
the final audit tried to rebuild the source files from the database instead. See
reports/stress-test.txt and
docs/quality-assurance.md.
The source material is not redistributed here; obtain it from CEM and NIL as described
in NOTICE.md, then:
export PES_SOURCES=/path/to/source/material
python src/extract/recover_options_2006_2017.py
python src/extract/parse_pdf_2018_2020.py
python src/ocr/run_ocr.py && python src/ocr/vote4.py
python src/tagging/finalize_tags.py
python src/qa/final_validation.pyRequires Python 3.10+, pdfplumber, and Tesseract with Polish language data for the
OCR stage. Validation and audit scripts run against data/questions.json alone and
need no source material.
- The 2021–2022 sessions are OCR-derived and carry a residual transcription risk despite consensus and manual review. Any remaining error is most likely to be there.
- Topic tags are rule-derived, not hand-assigned. The estimated error rate is 1–2%.
- Item statistics are unavailable for 1217 questions because CEM did not publish item analysis for the 2018–2022 sessions.
- Ten questions contain two identical answer options. This is present in the source material, not introduced here.
See CITATION.cff.
The division of labour, including the use of AI assistance in implementation, is
stated in CONTRIBUTIONS.md.
Code, taxonomy, documentation and application: PolyForm Noncommercial 1.0.0
(see LICENSE). Any noncommercial purpose is permitted, including personal
study, research, and use by educational, healthcare and government institutions. Examination questions: public information published by
CEM; no rights claimed or granted. See NOTICE.md.


