ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기A local desktop engine that turns question papers into customisable question cards.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A privacy-first desktop engine that instantly transforms dense academic past papers into clean, customizable question cards.
⚡ What is MergeMark?
MergeMark is a local-first desktop application built to replace manual data entry for students and teachers. Instead of spending hours retyping complex typography, matrices, and physics equations, you simply import a PDF past paper. MergeMark's engine parses the document layout and extracts it into beautifully formatted, isolated markdown and LaTeX modules.README 전문 보기 ↗A privacy-first desktop engine that instantly transforms dense academic past papers into clean, customizable question cards.
MergeMark is a local-first desktop application built to replace manual data entry for students and teachers. Instead of spending hours retyping complex typography, matrices, and physics equations, you simply import a PDF past paper. MergeMark's engine parses the document layout and extracts it into beautifully formatted, isolated markdown and LaTeX modules.
Currently optimized for GCSE and A-Level Mathematics & Further Mathematics, and tested on A-Level Physics and Computer Science papers.
This application is engineered for maximum performance and a minimal memory footprint:
pdfium-render) for glyphs, fonts, vector paths and page renderingEverything is imported on this machine. MergeMark has no AI service to send anything to: imports make no requests, need no API key and cost nothing.
tesseract on the PATH, for example sudo apt install tesseract-ocr). The Windows and macOS paths have been run against real papers; Tesseract is untested. OCR reads words, not mathematics, so every question it produces is kept for review. Where no local OCR engine is available, a scanned paper is reported as not transcribed.docs/MARK_SCHEME_CENSUS.md), so the feature is left out rather than shipped half-working. A question's answer can be typed into its card.A local import runs in four stages:
src-tauri/src/layout.rs). Reads every glyph's position, baseline, font and size from PDFium, together with the page's rules and vector paths. From these it rebuilds reading-order lines and the maths itself: fractions, radicals, scripts, sums and integrals with limits, matrices, piecewise definitions, vector arrows. It also rebuilds tables and code listings, and sets aside page furniture (headers, footers, margin text, barcodes, repeated QR codes). Font codes with no usable Unicode are resolved from the font's own tables; anything it can't identify is kept as � and flagged, never guessed.src-tauri/src/deterministic.rs, validate.rs). A card counts as a clean import only if its marks add up, it ends where the question ends, every figure is attached and no glyph is unidentified. Anything else is still imported, but flagged for review. Nothing is silently relabelled as a success.After the checks, each new card is compared with its subject's topics (each topic's name and one-line description) and with the cards already tagged in that subject, by the topic model, on this computer. A topic it is confident of is tagged; otherwise the card shows up to three suggestions. Only a topic with a description is ever tagged by the model alone, and only in a subject of 6 topics or more: a bare topic name, or a short list, is suggested. The threshold for tagging was set on 946 questions from 85 papers in 40 subjects, labelled with their topics by an AI assistant (Claude) during development and not yet checked by a person (scripts/fixtures/topic-labels.json, measured by src-tauri/examples/topic_eval.rs). On them, 95.5% of the topics it tags in a new library are right (96.0% once a subject has tagged cards), and a right topic is among the suggestions on 87% of the other cards. The model only reads: a question's text, marks and figures are the import's. Settings → Curriculum Taxonomy turns automatic tagging off (suggestions only) and suggests topics for cards that have none; run it again after changing a subject's topics.
On the 18 historical papers used for testing (Edexcel, AQA, Cambridge and practice papers across maths, physics and computer science), 243 of 244 questions import cleanly, and all 69 test-paper questions do. The one exception is flagged because its source draws a symbol as an outline with no character behind it. All of this runs with zero AI requests and zero cost.
The exam papers are the boards' copyright, so papers/ is not in the repository (papers/used/ holds the calibration papers: the 22 originals and the triage fixtures moved there after being fixed against; papers/unused/ the papers not yet tuned against). The papers the tests read are committed encrypted in src-tauri/fixtures/corpus/; with the key, node scripts/fixtures.mjs unpack restores them. Outputs go to the gitignored output/.
MERGEMARK_REQUIRE_FIXTURES=1 cargo test --manifest-path src-tauri/Cargo.toml
node scripts/run-zero-cost-calibration.mjs --stamp <run-id>
node scripts/verify-corpus-render.mjs output/zero-cost-orchestration/c-calibration/run-<run-id>
With MERGEMARK_REQUIRE_FIXTURES=1, a test whose paper is missing fails instead of passing unchecked. The app bundles the topic model, which is not in the repository either: bash scripts/fetch-topic-model.sh puts it in src-tauri/topic-model (pinned, checked against its SHA-256) before the first build. bash scripts/verify.sh <stamp> runs the tests, the calibration and the triage below in one go (1.5–2 hours).
To find problems on papers the engine has not been tuned against, triage everything in papers/unused/ (offline, no hand-made expected IDs; it checks printed mark totals, ID gaps, unidentified glyphs, missing figures and KaTeX rendering) and read output/triage/run-<stamp>/summary.md:
node scripts/triage-papers.mjs --stamp <run-id> # resumable
node scripts/triage-papers.mjs --stamp <run-id> --rescore # re-apply the checks to saved imports
A paper that is fixed against moves from papers/unused/ to papers/used/ and becomes a regression fixture.
The calibration imports every corpus paper offline. It fails if any artifact is stale or the question IDs differ from the independent list in scripts/fixtures/source-expected-ids.json (MergeMark has no client for any AI service, so a request cannot be attempted at all). The render check passes every card through the app's Markdown/KaTeX pipeline.
The mark-scheme reader is kept outside the app, for measuring a rebuild. To see what it makes of a scheme, and every reason it refuses one:
cargo run --manifest-path src-tauri/Cargo.toml --example e2e_import -- "<scheme>.pdf" "<name>" --mark-scheme --census --out <dir>
Download the installer for your computer from the Releases tab. Neither build is code-signed yet, so the first launch needs one extra step.
Windows (MergeMark_1.0.0_x64-setup.exe): run the installer. It installs for your own Windows account and needs no administrator rights. SmartScreen may say "Windows protected your PC": choose More info, then Run anyway.
macOS (MergeMark_1.0.0_universal.dmg, Apple Silicon and Intel, macOS 11 or later): open the disk image and drag MergeMark into Applications. The first time you open it, macOS refuses, because the app is not notarised by Apple. This is not a warning you can click through:
MergeMark then opens normally from then on.
Read notes for users before your first import — in particular, what the REVIEW badge means and how to check a card against its paper.
MergeMark checks for a newer version when it starts, and from Settings → Backup & Maintenance → Updates, where the check at start-up can be turned off. To check, it asks this repository's GitHub releases for the newest version's details: an ordinary web request that carries nothing about your library or your papers. An update installs only if it is signed with MergeMark's key, and only when you choose Install and restart. Your library is backed up when a new version first opens it. A 0.9 beta cannot update itself to 1.0, which is signed with a new key: install 1.0 over it from the Releases tab, and your library is kept.
Your feedback is critical — especially a card that imports without a REVIEW badge and is still wrong, because no automated check catches those.
👉 Open an issue with the paper's file name, the question number, what is wrong, and a screenshot of the card and the page if you can.
Copyright (c) 2026. All Rights Reserved.
This repository and its contents are proprietary. You may view the code for educational and portfolio evaluation purposes. However, you may not copy, modify, distribute, or use this code (or any of its assets) for commercial or non-commercial purposes without explicit written permission.