Skip to content

Releases: foxzyt/LibreOMR

LibreOMR v1.2.0

Choose a tag to compare

@github-actions github-actions released this 27 Oct 00:40

LibreOMR 1.2.0 Release Notes

LibreOMR 1.2.0 introduces LibreOMR Desktop, an intuitive graphical application designed to streamline the grading and evaluation of multiple-choice bubble sheets for educators, institutions, and assessment coordinators.

LibreOMR Desktop Overview

LibreOMR Desktop provides an end-to-end workflow for managing, processing, and analyzing standardized answer sheets directly from a clean desktop interface.

Key Capabilities

  • Single and Batch Sheet Evaluation: Process individual scanned sheets or evaluate entire batches from a directory in seconds.
  • Answer Key and Grading Configuration: Define answer keys with custom question weights, point scales, and the ability to mark questions as voided with automatic full credit.
  • Roster and Student Association: Map student names and identification numbers via roster CSV import to automatically associate marks with student profiles.
  • Statistical Dashboard and Item Analysis: Review real-time performance indicators, including average score, approval percentage, score distribution, and individual question difficulty.
  • Export Options: Export detailed grading results and student records directly to CSV and JSON formats for spreadsheet and database integration.
  • Printable Template Library: Includes a comprehensive catalog of standardized A4 answer sheets (10 to 100 questions, 3 to 5 options), economical 2-in-1 and 4-in-1 layouts, and True/False assessment sheets in six languages (English, Portuguese, Spanish, French, German, and Italian).
  • Windows Integration: Native desktop application with file associations, shell context menu integration for right-click grading of images and folders, and an integrated installer.

Precompiled Binary Packages

Platform Architecture Archive Checksum
Linux x86_64 libreomr-linux-x86_64.tar.gz SHA256
Windows x86_64 libreomr-windows-x86_64.zip SHA256
macOS Apple Silicon (arm64) libreomr-macos-arm64.tar.gz SHA256

Package Contents

Every release package includes:

  • bin/: CLI binary (libreomr) and dynamic runtime libraries.
  • lib/: Import and shared/static library targets.
  • include/libreomr/: C++ header (libreomr.hpp) and C ABI header (libreomr.h).
  • lib/cmake/LibreOMR/: CMake package configuration for find_package(LibreOMR REQUIRED).
  • lib/pkgconfig/: libreomr.pc for pkg-config.
  • LICENSE: GNU General Public License v3.0.
  • README.md: Documentation and code examples.

Verifying Checksums

To verify integrity, compare SHA-256 hashes against SHA256SUMS.txt:

# Linux
sha256sum -c SHA256SUMS.txt

# macOS
shasum -a 256 -c SHA256SUMS.txt

# Windows PowerShell
Get-FileHash -Algorithm SHA256 libreomr-*.zip

Copyright (C) 2026 Bernardo Alvim. Licensed under GNU General Public License v3.0.

Full Changelog: v1.1.3...v1.2.0

LibreOMR v1.1.3

Choose a tag to compare

@github-actions github-actions released this 21 Oct 21:21

LibreOMR 1.1.3

Fixes & CLI

  • Bubble refinement: require minimum ink mass before adjusting center to prevent centroid drift onto printed letters in empty bubbles.
  • CLI: add --no-orient, --no-adaptive-threshold, and --no-refine-bubbles flags to libreomr process.

Precompiled Binary Packages

Platform Architecture Archive Checksum
Linux x86_64 libreomr-linux-x86_64.tar.gz SHA256
Windows x86_64 libreomr-windows-x86_64.zip SHA256
macOS Apple Silicon (arm64) libreomr-macos-arm64.tar.gz SHA256

Package Contents

Every release package includes:

  • bin/: CLI binary (libreomr) and dynamic runtime libraries.
  • lib/: Import and shared/static library targets.
  • include/libreomr/: C++ header (libreomr.hpp) and C ABI header (libreomr.h).
  • lib/cmake/LibreOMR/: CMake package configuration for find_package(LibreOMR REQUIRED).
  • lib/pkgconfig/: libreomr.pc for pkg-config.
  • LICENSE: GNU General Public License v3.0.
  • README.md: Documentation and code examples.

Verifying Checksums

To verify integrity, compare SHA-256 hashes against SHA256SUMS.txt:

# Linux
sha256sum -c SHA256SUMS.txt

# macOS
shasum -a 256 -c SHA256SUMS.txt

# Windows PowerShell
Get-FileHash -Algorithm SHA256 libreomr-*.zip

Copyright (C) 2026 Bernardo Alvim. Licensed under GNU General Public License v3.0.

Full Changelog: v1.1.2...v1.1.3

LibreOMR v1.1.2

Choose a tag to compare

@github-actions github-actions released this 20 Oct 22:59

LibreOMR 1.1.2

Fixes

  • Fiducial detection: scale adaptive threshold window proportionally in corner detector fallback to prevent hollowed-out markers at 300+ DPI.

Precompiled Binary Packages

Platform Architecture Archive Checksum
Linux x86_64 libreomr-linux-x86_64.tar.gz SHA256
Windows x86_64 libreomr-windows-x86_64.zip SHA256
macOS Apple Silicon (arm64) libreomr-macos-arm64.tar.gz SHA256

Package Contents

Every release package includes:

  • bin/: CLI binary (libreomr) and dynamic runtime libraries.
  • lib/: Import and shared/static library targets.
  • include/libreomr/: C++ header (libreomr.hpp) and C ABI header (libreomr.h).
  • lib/cmake/LibreOMR/: CMake package configuration for find_package(LibreOMR REQUIRED).
  • lib/pkgconfig/: libreomr.pc for pkg-config.
  • LICENSE: GNU General Public License v3.0.
  • README.md: Documentation and code examples.

Verifying Checksums

To verify integrity, compare SHA-256 hashes against SHA256SUMS.txt:

# Linux
sha256sum -c SHA256SUMS.txt

# macOS
shasum -a 256 -c SHA256SUMS.txt

# Windows PowerShell
Get-FileHash -Algorithm SHA256 libreomr-*.zip

Copyright (C) 2026 Bernardo Alvim. Licensed under GNU General Public License v3.0.

Full Changelog: v1.1.1...v1.1.2

LibreOMR v1.1.1

Choose a tag to compare

@github-actions github-actions released this 20 Oct 21:55

LibreOMR 1.1.1

Fixes

  • Fiducial detection: dynamically scale background sampling ring to support high-resolution and 300+ DPI scans.
  • Orientation: add circular perimeter contrast scoring to prevent false rotations on blank and partially answered sheets.

Precompiled Binary Packages

Platform Architecture Archive Checksum
Linux x86_64 libreomr-linux-x86_64.tar.gz SHA256
Windows x86_64 libreomr-windows-x86_64.zip SHA256
macOS Apple Silicon (arm64) libreomr-macos-arm64.tar.gz SHA256

Package Contents

Every release package includes:

  • bin/: CLI binary (libreomr) and dynamic runtime libraries.
  • lib/: Import and shared/static library targets.
  • include/libreomr/: C++ header (libreomr.hpp) and C ABI header (libreomr.h).
  • lib/cmake/LibreOMR/: CMake package configuration for find_package(LibreOMR REQUIRED).
  • lib/pkgconfig/: libreomr.pc for pkg-config.
  • LICENSE: GNU General Public License v3.0.
  • README.md: Documentation and code examples.

Verifying Checksums

To verify integrity, compare SHA-256 hashes against SHA256SUMS.txt:

# Linux
sha256sum -c SHA256SUMS.txt

# macOS
shasum -a 256 -c SHA256SUMS.txt

# Windows PowerShell
Get-FileHash -Algorithm SHA256 libreomr-*.zip

Copyright (C) 2026 Bernardo Alvim. Licensed under GNU General Public License v3.0.

Full Changelog: v1.1.0...v1.1.1

LibreOMR v1.1.0

Choose a tag to compare

@github-actions github-actions released this 20 Oct 16:56

LibreOMR 1.1.0

Changes

  • Fiducial Detection: Support corner detection when non-page background (e.g. table margins) is present around the sheet using local contrast scoring and fallback candidate search.
  • Binarization: Use adaptive thresholding instead of global Otsu in Processor::process to handle non-uniform lighting and shadows.
  • Bubble Alignment: Add refine_bubble_centers option to locally adjust bubble sampling coordinates based on ink centroid, compensating for paper curvature.
  • Orientation: Add auto_orient to detect 0°, 90°, 180°, and 270° page rotations using candidate quad scoring.
  • Image Rotation: Update Image::rotate to expand canvas dimensions to prevent clipping rotated content.

API Additions

  • C++: ProcessorConfig::auto_orient, ProcessorConfig::refine_bubble_centers, and corresponding getters/setters in Processor.
  • C API: libreomr_processor_set_auto_orient, libreomr_processor_set_adaptive_thresholding, libreomr_processor_set_refine_bubble_centers.

Distribution

Precompiled packages and SHA256SUMS.txt are attached below.

Precompiled Binary Packages

Platform Architecture Archive Checksum
Linux x86_64 libreomr-linux-x86_64.tar.gz SHA256
Windows x86_64 libreomr-windows-x86_64.zip SHA256
macOS Apple Silicon (arm64) libreomr-macos-arm64.tar.gz SHA256

Package Contents

Every release package includes:

  • bin/: CLI binary (libreomr) and dynamic runtime libraries.
  • lib/: Import and shared/static library targets.
  • include/libreomr/: C++ header (libreomr.hpp) and C ABI header (libreomr.h).
  • lib/cmake/LibreOMR/: CMake package configuration for find_package(LibreOMR REQUIRED).
  • lib/pkgconfig/: libreomr.pc for pkg-config.
  • LICENSE: GNU General Public License v3.0.
  • README.md: Documentation and code examples.

Verifying Checksums

To verify integrity, compare SHA-256 hashes against SHA256SUMS.txt:

# Linux
sha256sum -c SHA256SUMS.txt

# macOS
shasum -a 256 -c SHA256SUMS.txt

# Windows PowerShell
Get-FileHash -Algorithm SHA256 libreomr-*.zip

Copyright (C) 2026 Bernardo Alvim. Licensed under GNU General Public License v3.0.

Full Changelog: v1.0.3...v1.1.0

LibreOMR v1.0.3

Choose a tag to compare

@github-actions github-actions released this 19 Oct 22:05

LibreOMR 1.0.3

Patch release resolving coordinate space projection in debug rendering and adding defensive allocation guards.

Bug Fixes

  • Debug Overlay Projection: Fixed coordinate space mismatch in PageResult::renderDebugImage and libreomr_result_render_debug when processing rotated or skewed images. Bubble overlays are now projected via template-to-base homography directly onto the original image space.
  • Memory Safety: Added nullptr guards post-calloc in PageResult::toC across questions and bubble allocations to prevent null pointer dereferences on out-of-memory (OOM) conditions.

Assets and Distribution

Precompiled packages are available below for Linux (x86_64), Windows (x86_64), and macOS (Apple Silicon arm64). Integrity checksums are listed in SHA256SUMS.txt.

Precompiled Binary Packages

Platform Architecture Archive Checksum
Linux x86_64 libreomr-linux-x86_64.tar.gz SHA256
Windows x86_64 libreomr-windows-x86_64.zip SHA256
macOS Apple Silicon (arm64) libreomr-macos-arm64.tar.gz SHA256

Package Contents

Every release package includes:

  • bin/: CLI binary (libreomr) and dynamic runtime libraries.
  • lib/: Import and shared/static library targets.
  • include/libreomr/: C++ header (libreomr.hpp) and C ABI header (libreomr.h).
  • lib/cmake/LibreOMR/: CMake package configuration for find_package(LibreOMR REQUIRED).
  • lib/pkgconfig/: libreomr.pc for pkg-config.
  • LICENSE: GNU General Public License v3.0.
  • README.md: Documentation and code examples.

Verifying Checksums

To verify integrity, compare SHA-256 hashes against SHA256SUMS.txt:

# Linux
sha256sum -c SHA256SUMS.txt

# macOS
shasum -a 256 -c SHA256SUMS.txt

# Windows PowerShell
Get-FileHash -Algorithm SHA256 libreomr-*.zip

Copyright (C) 2026 Bernardo Alvim. Licensed under GNU General Public License v3.0.

Full Changelog: v1.0.2...v1.0.3

LibreOMR v1.0.2

Choose a tag to compare

@github-actions github-actions released this 19 Oct 19:54

LibreOMR 1.0.2

Patch release fixing out-of-bounds crash on empty input images.

Bug Fixes

  • Fixed unhandled exception in Processor::process: Processing empty images (0x0 or unallocated buffers) or zero-dimension templates now returns a graceful failed-alignment PageResult instead of throwing std::out_of_range.

Assets and Distribution

Precompiled packages are available below for Linux (x86_64), Windows (x86_64), and macOS (Apple Silicon arm64). Integrity checksums are listed in SHA256SUMS.txt.

Precompiled Binary Packages

Platform Architecture Archive Checksum
Linux x86_64 libreomr-linux-x86_64.tar.gz SHA256
Windows x86_64 libreomr-windows-x86_64.zip SHA256
macOS Apple Silicon (arm64) libreomr-macos-arm64.tar.gz SHA256

Package Contents

Every release package includes:

  • bin/: CLI binary (libreomr) and dynamic runtime libraries.
  • lib/: Import and shared/static library targets.
  • include/libreomr/: C++ header (libreomr.hpp) and C ABI header (libreomr.h).
  • lib/cmake/LibreOMR/: CMake package configuration for find_package(LibreOMR REQUIRED).
  • lib/pkgconfig/: libreomr.pc for pkg-config.
  • LICENSE: GNU General Public License v3.0.
  • README.md: Documentation and code examples.

Verifying Checksums

To verify integrity, compare SHA-256 hashes against SHA256SUMS.txt:

# Linux
sha256sum -c SHA256SUMS.txt

# macOS
shasum -a 256 -c SHA256SUMS.txt

# Windows PowerShell
Get-FileHash -Algorithm SHA256 libreomr-*.zip

Copyright (C) 2026 Bernardo Alvim. Licensed under GNU General Public License v3.0.

Full Changelog: v1.0.1...v1.0.2

LibreOMR v1.0.1

Choose a tag to compare

@github-actions github-actions released this 19 Oct 18:33

LibreOMR 1.0.1

Patch release fixing bubble label matching in synthesized answer sheets.

Bug Fixes

  • Fixed substring collision in Template::renderFilledSheet: Answer label matching now uses exact token parsing (delimited by commas or semicolons) instead of substring search, preventing unintended fills on numeric or prefix-sharing labels (e.g., answering "10" no longer erroneously marks option "1").

Assets and Distribution

Precompiled packages are available below for Linux (x86_64), Windows (x86_64), and macOS (Apple Silicon arm64). Integrity checksums are listed in SHA256SUMS.txt.

Precompiled Binary Packages

Platform Architecture Archive Checksum
Linux x86_64 libreomr-linux-x86_64.tar.gz SHA256
Windows x86_64 libreomr-windows-x86_64.zip SHA256
macOS Apple Silicon (arm64) libreomr-macos-arm64.tar.gz SHA256

Package Contents

Every release package includes:

  • bin/: CLI binary (libreomr) and dynamic runtime libraries.
  • lib/: Import and shared/static library targets.
  • include/libreomr/: C++ header (libreomr.hpp) and C ABI header (libreomr.h).
  • lib/cmake/LibreOMR/: CMake package configuration for find_package(LibreOMR REQUIRED).
  • lib/pkgconfig/: libreomr.pc for pkg-config.
  • LICENSE: GNU General Public License v3.0.
  • README.md: Documentation and code examples.

Verifying Checksums

To verify integrity, compare SHA-256 hashes against SHA256SUMS.txt:

# Linux
sha256sum -c SHA256SUMS.txt

# macOS
shasum -a 256 -c SHA256SUMS.txt

# Windows PowerShell
Get-FileHash -Algorithm SHA256 libreomr-*.zip

Copyright (C) 2026 Bernardo Alvim. Licensed under GNU General Public License v3.0.

Full Changelog: v1.0.0...v1.0.1

LibreOMR v1.0.0

Choose a tag to compare

@github-actions github-actions released this 19 Oct 01:31

LibreOMR 1.0.0

Initial release of LibreOMR, a C++17 and C library for Optical Mark Recognition (OMR).

Core Features

  • Document rectification: Automatic detection of 4 corner registration fiducials via connected component analysis and projective homography computation using Hartley-normalized Direct Linear Transformation (DLT).
  • Photometric analysis: Otsu optimal global thresholding, integral-image adaptive local thresholding, and differential inner-bubble sampling relative to local paper background.
  • Classification and ambiguity handling: Fill ratio calculation, relative contrast scoring, detection of multiple marks on single-choice fields, and confidence interval estimation.
  • Dual API:
    • Modern C++ API (libreomr/libreomr.hpp) with RAII, STL containers, and integrated JSON serialization.
    • C ABI (libreomr/libreomr.h) with opaque handles, explicit error codes, thread-local error retrieval, and dynamic/static linking support.
  • Zero external image or parser dependencies: Integrated PNG, JPEG, BMP, and TGA codecs, and embedded JSON parser/serializer.
  • Form synthesis: Programmatic rendering of scannable blank forms and calibration answer sheets directly from template definitions.
  • CLI utility (libreomr): Command-line tool for template creation, sheet rendering, batch form evaluation, and debug visual overlay export.

Assets and Distribution

Precompiled packages are available below for Linux (x86_64), Windows (x86_64), and macOS (Apple Silicon arm64). Integrity checksums are listed in SHA256SUMS.txt.

Precompiled Binary Packages

Platform Architecture Archive Checksum
Linux x86_64 libreomr-linux-x86_64.tar.gz SHA256
Windows x86_64 libreomr-windows-x86_64.zip SHA256
macOS Apple Silicon (arm64) libreomr-macos-arm64.tar.gz SHA256

Package Contents

Every release package includes:

  • bin/: CLI binary (libreomr) and dynamic runtime libraries.
  • lib/: Import and shared/static library targets.
  • include/libreomr/: C++ header (libreomr.hpp) and C ABI header (libreomr.h).
  • lib/cmake/LibreOMR/: CMake package configuration for find_package(LibreOMR REQUIRED).
  • lib/pkgconfig/: libreomr.pc for pkg-config.
  • LICENSE: GNU General Public License v3.0.
  • README.md: Documentation and code examples.

Verifying Checksums

To verify integrity, compare SHA-256 hashes against SHA256SUMS.txt:

# Linux
sha256sum -c SHA256SUMS.txt

# macOS
shasum -a 256 -c SHA256SUMS.txt

# Windows PowerShell
Get-FileHash -Algorithm SHA256 libreomr-*.zip

Copyright (C) 2026 Bernardo Alvim. Licensed under GNU General Public License v3.0.

Full Changelog: https://github.com/foxzyt/LibreOMR/commits/v1.0.0