hiroi-sora/Umi-OCR
39.3
Weak · 26 September 2026
11.3k
lines of production code
Python
primary language
4
measurements over time
What this system is
Umi-OCR is a cross-platform desktop application for Windows and Linux that performs offline optical character recognition on images and documents. It supports batch processing, screenshot capture, and QR code scanning/generation, with results exportable to formats like searchable PDF, TXT, and CSV. The system features a modular plugin architecture for OCR engines, a dynamic QML-based user interface, and an HTTP API for programmatic access.
How it got here
2023 — Umi-OCR v2 architecture and feature expansion
42 changes.
This period marked the initial release of Umi-OCR v2, involving a complete architectural overhaul that replaced legacy PySide2 and QML components with a new plugin-based system, centralized event bus, and modular output handling. The update introduced significant new capabilities, including batch document processing, QR code generation, and an HTTP API, while simultaneously refining the UI with a declarative configuration system, dynamic tab management, and enhanced theme support.
2024 — OCR parsing and platform enhancements
5 changes.
This period focused on improving core OCR capabilities by introducing layout analysis tools for text sorting and paragraph parsing, alongside a dedicated QR code configuration interface. It also expanded platform support with Linux-specific features for shortcuts and hardware control, while updating localization files and adding a comprehensive About page for system information.
Features
Initial release of Umi-OCR v2 with changelog and documentation
This commit introduces the initial v2 release of Umi-OCR, a free, open-source, batch offline OCR software for Windows 7+ and Linux. The repository now includes a comprehensive CHANGE\_LOG.md detailing features such as screenshot OCR, batch document recognition, QR code scanning/generation, and HTTP/command-line interfaces. The project is licensed under MIT and includes README files in Chinese, English, and Japanese. Key technical changes include a new plugin system where the offline OCR module is externalized, a restructured directory layout, and updated .gitignore rules to exclude build artifacts and runtime environments while preserving source files.
(repo-wide) · high confidence
Introduces configurable text layout parsers and ignore-area filtering
The tbpu (text block processing unit) module now provides a selection of layout parsers—single-column and multi-column modes for natural paragraphs, forced line breaks, and no-break text—along with a dedicated parser for code blocks that preserves indentation. It also adds an ignore-area feature to exclude text blocks falling within specified regions, and utilizes a gap-tree sorting algorithm to improve text ordering accuracy.
_UmiOCR-data/py\src/ocr/tbpu · high confidence
Introduction of a dynamic plugin system for offline OCR modules
The application now supports a new plugin architecture that allows offline OCR modules to be loaded dynamically from a dedicated 'plugins' directory rather than being bundled internally. This change introduces a controller that scans for valid Python packages containing specific metadata (PluginInfo, group, api\_class) and initializes them, enabling users to extend or replace OCR capabilities by placing compatible plugin packages in the designated folder.
_UmiOCR-data/py\_src/plugins\controller · high confidence
Linux platform support for shortcuts and hardware control
This change introduces the Linux platform module, adding the ability to create and delete desktop and start menu shortcuts via .desktop files, as well as basic hardware control functions like shutdown and hibernate. It also provides utilities for OpenGL renderer selection, key name mapping, and launching new processes or opening files with the default application. Note that automatic startup shortcuts are not yet supported on Linux and require manual configuration.
_UmiOCR-data/py\src/platform/linux · high confidence
New About page with version, license, and system info
The application now includes an 'About' tab that displays the current version, project links (official site, plugins, issue tracker), release sources (GitHub, SourceForge, Lanzou), and the license agreement. It also lists authors and translators, and provides a 'Copy' button to export runtime environment information for debugging purposes.
_UmiOCR-data/qt\res/qml/TabPages/About · high confidence
New Batch Document Processing Tab
A new 'BatchDOC' tab has been added to the application, providing a dedicated interface for batch processing of document files (such as PDFs). This feature allows users to load multiple documents, configure OCR and post-processing options (including content extraction modes and ignore areas), and manage tasks with progress tracking. The interface includes a document preview panel for inspecting pages and entering passwords for encrypted files, as well as configuration options for output formats (layered PDF, plain text, CSV, etc.) and post-task actions.
_UmiOCR-data/qt\res/qml/TabPages/BatchDOC · high confidence
New HTTP API endpoints for OCR, document processing, and QR codes
The server now exposes dedicated HTTP endpoints for programmatic interaction: POST /api/ocr for image OCR with base64 input and configurable options (including layout parsing and ignore areas), GET /api/ocr/get\_options to retrieve available configuration parameters, POST /api/qrcode for both recognizing QR codes from base64 images and generating QR code images from text with customizable dimensions and error correction levels, and POST /api/doc for document OCR supporting multi-page files, password protection, page range selection, and ignore areas. These endpoints are built on the Bottle micro-framework and include CORS headers to allow cross-origin requests.
_UmiOCR-data/py\src/server · high confidence
New Ignore Area editor for excluding text regions during OCR
A new Ignore Area widget has been added to the application, allowing users to define rectangular regions on images that should be excluded from OCR results. The editor displays the image with overlaid text boxes and lets users draw ignore zones using the right mouse button. These configurations are persisted in the application settings and are applied during batch processing to prevent specific areas (such as watermarks) from being recognized.
_UmiOCR-data/qt\res/qml/Widgets/IgnoreArea · high confidence
New OCR API Manager component for plugin-based configuration
A new QML component, OcrManager.qml, has been introduced to centralize the management of OCR API plugins. This component handles the initialization of available OCR engines, validates that at least one plugin is available before allowing configuration changes, and prevents modifications while OCR tasks are actively running. It provides functions to apply configuration updates, force-stop all running missions, and deploy configuration UI sections to various pages, serving as the frontend interface for the newly externalized offline OCR module.
_UmiOCR-data/qt\res/qml/ApiManager · high confidence
New OCR plugin API interface module
A new \api\ module has been introduced to manage OCR plugin interactions. It provides functions to initialize plugins, retrieve OCR API instances with automatic type correction for arguments (converting specific floats back to integers), and fetch local configuration options. This module serves as the central interface for the plugin system, handling instance creation and error reporting via the logging system.
_UmiOCR-data/py\src/ocr/api · high confidence
New QML components for async file loading, window management, UI scaling, and system tray
This change introduces four new QML components in the MainWindow directory to enhance core application behaviors. AsynFilesLoader.qml provides an asynchronous file scanning module that displays real-time progress updates while loading large numbers of files. MainWindowManager.qml implements persistent window state management, saving and restoring the main window's position, size, and screen placement across sessions, along with logic to handle closing the window to the system tray. Size\_.qml introduces a scalable UI system that separates line height and font size, allowing for resolution-independent scaling and language-specific text adjustments. SystemTray.qml manages the application's system tray icon and context menu, including a dedicated 'Open Main Window' button and support for dynamic menu items.
_UmiOCR-data/qt\res/qml/MainWindow · high confidence
New Screenshot OCR tab page with configurable hotkeys and post-processing
The ScreenshotOCR tab page has been introduced, providing a dedicated interface for capturing screenshots and performing OCR. Users can configure hotkeys for taking screenshots, pasting images, and repeating the last screenshot area, with platform-specific defaults (Win+Alt+C/V on Windows, Alt+C/V on other systems). The page supports automatic OCR on captured images or pasted clipboard content, with options to copy results to the clipboard and automatically bring the main window to the foreground. Post-processing of OCR text can be configured using the tbpu parser, and users can control notification behavior for simple actions.
_UmiOCR-data/qt\res/qml/TabPages/ScreenshotOCR · high confidence
New Windows platform abstraction layer for shortcuts, hardware, and process management
This change introduces a new \win32\ platform module that centralizes Windows-specific operations. It provides an \Api\ class to manage application shortcuts (creating/deleting on Desktop, Start Menu, and Startup), control hardware states (shutdown/hibernate), and launch external processes in independent console windows. Additionally, it includes logic to automatically select the most suitable OpenGL renderer based on the Windows version and a key translator to normalize keyboard input for consistent hotkey handling.
_UmiOCR-data/py\src/platform/win32 · high confidence
New batch document processing and QR code scanning capabilities
The application introduces a new BatchDOC tab for processing multi-page documents with support for page ranges, password-protected files, and configurable output formats (PDF, TXT, CSV) including filename placeholders like %range. A new QRCode tab allows scanning QR codes/barcodes from images and generating barcode images. The existing BatchOCR and ScreenshotOCR tabs have been refactored to use a new unified page controller architecture, improving task management and UI integration.
_UmiOCR-data/py\_src/tag\pages · high confidence
New event bus and hotkey subsystem for QML integration
This change introduces a new event bus architecture and hotkey management system within the application. It adds a publish/subscribe service (PubSubService) that safely handles event publishing across threads, exposing QML-compatible connectors (PubSubConnector) for subscribing, unsubscribing, and publishing events from the UI layer. Additionally, it implements a new key-mouse connector (KeyMouseConnector) backed by a keyboard controller that registers global hotkeys, supports hotkey recording, and allows users to interrupt operations (such as screenshots) by pressing the Escape key.
_UmiOCR-data/py\_src/event\bus · high confidence
New font selection panel and left-navigation sidebar in Global Settings
The Global Settings page now includes a dedicated Font Panel (FontPanel.qml) that allows users to select separate fonts for the UI interface and for OCR content data, with a list filtered to prioritize Chinese characters. Additionally, the main GlobalConfigsPage has been restructured to feature a left-side navigation sidebar that lists setting groups, enabling users to jump directly to specific configuration sections.
_UmiOCR-data/qt\res/qml/TabPages/GlobalConfigsPage · high confidence
New global import modules for logging, about info, plugin i18n, and thread-safe function calls
The application now exposes a set of new global Python modules in the \imports\ directory to standardize core functionality. \umi\_log\ provides a structured logging system with JSON file output, file rotation, and configurable log levels (defaulting to ERROR for file saves), including filters to suppress noisy Qt framework messages. \umi\_about\ replaces the previous global info mechanism, loading application metadata from \about.json\ and exposing details like version, platform, and hardware specs. \plugin\_i18n\ introduces a CSV-based translation API for plugins, allowing them to load and use localized strings. Additionally, \call\_func\ offers a thread-safe utility to execute Python functions in the main Qt thread, supporting both immediate and delayed execution with cancellation capabilities.
_UmiOCR-data/py\src/imports · high confidence
New i18n developer toolkit for managing UI translations
The \dev-tools/i18n\ directory now includes a comprehensive set of scripts and documentation to streamline the localization workflow. This includes \lupdate\_all.py\ and \lrelease\_all.py\ for batch-generating and compiling Qt translation files (\.ts\ to \.qm\) for both QML and Python sources, and \convert\_ts\_txt.py\/\convert\_txt\_ts.py\ for converting translation files to plain text to facilitate machine translation or external editing. The addition also provides detailed guides (\README.md\, \翻译步骤(完整).md\, \翻译步骤(简易).md\) for contributors on how to use Weblate, Linguist, and the new conversion tools to update and submit translations.
dev-tools/i18n · high confidence
New image viewer components with text overlay and selection
The ImageViewer area now uses new QML components (ImageScale, ImageWithText, TextBox) to display images with overlaid OCR text blocks. Users can now select text directly on the image, copy selected text (including across multiple blocks), and view line-break indicators. The image viewer also supports zooming, saving images to the desktop, and opening images with the default system application.
_UmiOCR-data/qt\res/qml/Widgets/ImageViewer · high confidence
New layout analysis tools for text sorting and paragraph parsing
The \parser\_tools\ module now includes three new components: \GapTree\ for sorting OCR text blocks into human-readable reading order, \line\_preprocessing\ for normalizing bounding boxes and handling rotated text, and \paragraph\_parse\ for detecting paragraph boundaries and inserting appropriate separators (spaces or newlines) between lines.
_UmiOCR-data/py\_src/ocr/tbpu/parser\tools · high confidence
New modular output system with searchable PDF support
The OCR output module has been restructured into a modular system with dedicated classes for various formats, including TXT (standard, plain, and individual files), Markdown, JSONL, and CSV (with adaptive encoding for better Excel compatibility). A key addition is the support for layered (searchable) PDFs, which overlays OCR text onto the original document while preserving existing text and metadata, and single-layer PDFs that replace the original content with OCR text. The system also handles encrypted documents by attempting decryption with a provided password and includes robust error handling and file-saving mechanisms.
_UmiOCR-data/py\src/ocr/output · high confidence
New reusable UI widget library for consistent interface design
This update introduces a comprehensive suite of new QML components in the Widgets directory to standardize the application's look and feel. Key additions include DoubleColumnLayout and DoubleRowLayout for resizable split-pane views with state caching, a DoubleSwitchableLayout to toggle between vertical and horizontal arrangements, and a MissionCtrlPanel for managing task progress with timers and counters. The library also provides enhanced controls such as CheckBox\_ and CheckButton with animation support, a MarkdownView for rendering text with link handling, a ModalLayer for overlay dialogs (including Esc-to-close), and utility components like DropArea\_ for file handling and IconButtonBar for action menus.
_UmiOCR-data/qt\res/qml/Widgets · high confidence
New unified popup and notification system
The application now uses a new set of QML components in the Popup\_ directory to manage all user-facing dialogs and notifications. This includes a centralized PopupManager that exposes methods for simple auto-dismissing notifications, confirmation dialogs, and dialogs with a "Do not show again" option. The system supports both internal overlays and external system-style windows, features a new MaskLayer for background dimming, and allows error messages to be copied or linked to issue trackers directly from the dialog.
_UmiOCR-data/qt\res/qml/Popup\ · high confidence_
New utility modules for async file scanning, thread management, and configuration handling
The application introduces a new \utils\ package containing several core components: \file\_finder\ provides both synchronous and asynchronous file scanning with UI progress updates; \thread\_pool\ manages background tasks via a global QThreadPool; \pre\_configs\ handles early-stage JSON configuration storage; \app\_opengl\ manages OpenGL renderer selection and compatibility checks; \i18n\_configs\ handles UI language loading and mapping; \theme\_connector\ loads and saves custom theme JSON; and \utils\_connector\ exposes these utilities to the QML frontend. These changes enable asynchronous file loading, improved configuration management, and better cross-platform utility access.
_UmiOCR-data/py\src/utils · high confidence
Removals
Removal of legacy DoubleColumnLayout QML widget
The \DoubleColumnLayout.qml\ component, which previously provided a split-pane interface with a draggable divider and automatic hiding of columns when narrowed, has been removed from the application. This change eliminates the specific QML implementation for the dual-column view, indicating that this layout pattern is no longer supported or has been replaced by a different architectural approach in the current codebase.
UmiOCR-data/res/qml/Widgets · high confidence
Removal of legacy PySide2 QML application entry point
The legacy Python entry point for the QML-based UI (UmiOCR-data/app/\_\init\\_.py) has been removed. This file previously initialized the PySide2 application, configured OpenGL software rendering to reduce flicker, and loaded the main QML interface. Its removal indicates a shift away from this specific PySide2 startup mechanism, likely in favor of the newly introduced QML/Python controller linkage or a different application bootstrap method.
UmiOCR-data/app · high confidence
Removal of legacy QML tab page components
The QML files for the BatchOCR, GlobalSettings, Page3, ScreenshotOCR, and the PagesController logic have been deleted from the TabPages directory. This removes the previous implementation of the batch processing interface, global settings panel, screenshot OCR view, and the dynamic tab management controller that handled page instantiation and navigation.
UmiOCR-data/res/qml/TabPages · high confidence
Removal of legacy QML theme definition files
The legacy QML theme infrastructure has been removed from the application. Specifically, the base theme definition (Theme.qml), the light theme implementation (ThemeLight.qml), and the themes controller (ThemesController.qml) have been deleted. This eliminates the previous color, font, size, and effect property definitions that were previously managed by these QML objects.
UmiOCR-data/res/qml/Themes · high confidence
Behavioural changes
27 commits (0 fixes) modifying UmiOCR-data/i18n
A change to existing behaviour in UmiOCR-data/i18n — 27 commits, 6 files.
UmiOCR-data/i18n · medium confidence · unverified
Batch OCR tab page restructured with new configuration and preview components
The Batch OCR tab page has been reorganized into distinct QML components: BatchOCR.qml (main logic and layout), BatchOCRConfigs.qml (settings), and PreviewImage.qml (image/text preview). Key behavioral changes include: 1) The 'recursive subfolder reading' option is now a standard configuration setting rather than a special mode. 2) Task completion notifications now display the count of failed images in a simple notification instead of a detailed error popup. 3) Failed recognition items are now marked with red text in the file table. 4) A new image preview panel allows users to click on image entries to view the original image with optional OCR text overlay and extracted text in a split view. 5) The paragraph merging configuration has been updated to use layout analysis (tbpu.parser) instead of the previous tbpu.merge approach.
_UmiOCR-data/qt\res/qml/TabPages/BatchOCR · high confidence
Improved startup stability and error reporting with new help documentation
The application now provides more robust error handling during startup: if the runtime environment or main program fails to initialize, a detailed error message is displayed along with the path to the log file for easier troubleshooting. A new 'Help' document has been added to guide users through common issues such as missing Visual C++ redistributables, OpenGL context errors, and Windows 7 compatibility patches. Additionally, the startup script has been refactored to use a new logging module and improved output stream redirection, ensuring that console output is only redirected when necessary.
UmiOCR-data · high confidence
Introduces a dynamic tab page management system with lazy loading
The application now uses a new \PagesManager\ and \TabPage\ QML architecture to manage UI pages dynamically. This system supports lazy loading of page components to improve startup performance and allows for the runtime creation, switching, and destruction of tabs. It integrates with a Python backend via a \TagPageConnector\ to handle logic controllers for specific pages (such as ScreenshotOCR, BatchOCR, and QRCode) while supporting simple pages without controllers (like GlobalConfigs and About).
_UmiOCR-data/qt\res/qml/TabPages · high confidence
Introduces a unified task queue system and document preview connector
The \mission\ module has been restructured to include a new \Mission\ base class that manages task queues with support for pausing, resuming, and stopping, alongside a \DocPreviewConnector\ that enables on-demand preview of document pages and their OCR results. This change also introduces dedicated task managers for OCR (\MissionOCR\), documents (\MissionDOC\), and QR codes (\MissionQRCode\), along with a \MissionConnector\ to expose these controllers to the QML frontend, fundamentally changing how background tasks are scheduled and executed.
_UmiOCR-data/py\src/mission · high confidence
Navigation page UI overhaul with Markdown rendering and drag-and-drop support
The Navigation tab has been restructured to use a DoubleRowLayout instead of the previous DoubleColumnLayout, allowing for more flexible width adjustments based on font size. The right-hand panel now renders the introduction text using a dedicated MarkdownView component rather than a raw TextEdit, enabling richer formatting for the welcome message and version info. Additionally, a DropArea has been added to the navigation page to provide visual feedback and instructions when users attempt to drag files into the sidebar, guiding them to open the appropriate functional tab first.
_UmiOCR-data/qt\res/qml/TabPages/Navigation · high confidence
New centralized application entry point with structured initialization
A new \run.py\ entry point has been introduced to manage the Umi-OCR startup sequence. This module handles the initialization of the \UmiAbout\ global information, configures Qt application settings (such as high-DPI scaling and OpenGL context sharing), and registers a comprehensive set of Python connectors (including TagPage, Mission, DocPreview, PubSub, KeyMouse, Plugins, Theme, Image, and GlobalConfigs) with the QML engine. It also sets up the logging system by redirecting Qt messages to the Umi log module and initializes internationalization before launching the main QML interface.
_UmiOCR-data/py\src · high confidence
New declarative configuration system for settings management
The application now uses a new declarative QML-based configuration framework (ConfigItemComp, Configs, GlobalConfigs) to manage settings. This introduces a structured dictionary-based approach for defining UI elements (booleans, text, numbers, enums, files, hotkeys) and their persistence via the Settings component. Users benefit from improved UI consistency, support for nested configuration groups with folding, advanced option visibility toggles, and integrated tooltips. The system also enforces platform-specific constraints, such as disabling shutdown/hibernate options on non-Windows systems, and supports dynamic reloading of configuration states.
_UmiOCR-data/qt\res/qml/Configs · high confidence
New main window layout with ESC-to-hide behavior
The main application window is now defined by a new QML entry point (Main.qml) that establishes the core UI structure, including the tab view, image manager, and global configuration singletons. A key behavioral change is the handling of the Escape key: pressing Esc no longer closes the application entirely; instead, it hides the main window to the system tray if the 'closeWin2Hide' setting is enabled, or minimizes the window on platforms without a tray, improving usability for background operation.
_UmiOCR-data/qt\res/qml · high confidence
New screenshot workflow with click-mode support and Linux window-position fixes
The ImageManager QML module now provides a dedicated screenshot workflow that includes a new 'click screenshot' mode (allowing users to select a region by clicking twice instead of dragging), a 'repeat last screenshot' feature, and the ability to hide the main window before capturing to prevent UI interference. It also fixes a bug on Linux where the main window would shift position after a screenshot due to taskbar exclusion issues, and adds a global setting to control whether the main window is hidden during capture.
_UmiOCR-data/qt\res/qml/ImageManager · high confidence
New theme system with Solarized and Cyberpunk options
The application now features a redesigned theme engine that supports switching between built-in themes, including the newly added Solarized Light, Solarized Dark, and Cyberpunk styles alongside the existing Default Light and Dark options. This change introduces a new configuration mechanism where theme definitions are stored in JSON, allowing for external customization and persistence of user preferences through a dedicated ThemeManager component.
_UmiOCR-data/qt\res/qml/Themes · high confidence
Platform-specific renderer selection on first launch
The application now automatically selects the most suitable rendering engine based on the user's operating system at startup. This is achieved through a new platform abstraction layer that detects the OS (Windows or Linux) and instantiates the corresponding API module, ensuring the correct backend is used without manual configuration.
_UmiOCR-data/py\src/platform · high confidence
QR Code tab receives dedicated configuration and auto-refresh behavior
The QR Code tab now includes a dedicated configuration component (QRCodeConfigs.qml) that exposes settings for barcode generation (format, dimensions, quiet zone, error correction) and image preprocessing (median filter, sharpness, contrast, grayscale, threshold). Additionally, the main QRCode.qml component now listens for configuration changes and automatically regenerates the barcode image via a delayed event loop, ensuring the preview updates immediately after parameter adjustments without requiring manual intervention.
_UmiOCR-data/qt\res/qml/TabPages/QRCode · high confidence
Redesigned results panel with enhanced text selection and editing capabilities
The results panel has been rebuilt using new QML components (ResultTextContainer and ResultsTableView) to support advanced text interactions. Users can now select text across multiple result blocks, use Ctrl+A for single-block selection or Ctrl+Shift+A (via double-click logic) for full selection, and copy selected text from multiple blocks simultaneously. The panel also supports inline editing of result text, with changes automatically synced to the model, and includes a dedicated copy button for each record. Additionally, the UI displays timing and confidence scores for each OCR result.
_UmiOCR-data/qt\res/qml/Widgets/ResultLayout · high confidence
Refactored image handling with dedicated screenshot controller and Qt/PIL conversion
The image controller module has been restructured to improve reliability and separation of concerns. A new \screenshot\_controller.py\ now handles screen capture, clipboard inspection (images, URLs, text), and image clipping, replacing the previous monolithic approach. A new \ImageQt.py\ module provides robust conversion between PIL and Qt image formats (QImage/QPixmap), addressing issues with data alignment and format support. The \image\_provider.py\ manages a centralized pixmap cache for QML rendering, while \image\_connector.py\ exposes these capabilities to the UI layer. These changes enhance screenshot stability, fix bugs related to copying local images, and improve the overall image processing pipeline.
_UmiOCR-data/py\_src/image\controller · high confidence
Removal of Main.qml main window definition
The QML file defining the main application window (Main.qml) has been deleted from the resources. This file previously contained the root Window component, including the layout for the main container, the tab view controller, and the settings persistence logic. Its removal indicates a structural change to how the main UI entry point is defined or managed within the application.
UmiOCR-data/res/qml · high confidence
Tab bar UI refinements and configuration persistence
The tab bar interface now persists the 'window always on top' and 'tab bar lock' states to global configuration, ensuring they survive application restarts. The UI has been updated to use a scalable sizing system (replacing fixed theme values with size\_ properties) for better proportion control, and the tab close button icon has been changed from 'close' to 'no'. Additionally, the pin button now displays a tooltip, and visual adjustments include updated margins, colors, and shadow effects.
_UmiOCR-data/qt\res/qml/TabBar\ · high confidence_
Tab persistence and layout restructuring
The tab view now automatically saves and restores the list of open pages and the currently selected tab index across sessions, ensuring your workspace is preserved after restarts. The underlying architecture has been refactored to use a new \PagesManager\ component and a dedicated settings module for this persistence. Additionally, the UI layout has been restructured to position the tab bar and page container using explicit anchors rather than a column layout, improving rendering stability.
_UmiOCR-data/qt\res/qml/TabView\ · high confidence_
Updated release localization files for multiple languages
The release localization files in dev-tools/i18n/release have been updated with new translations for Arabic, English (US), Spanish, Persian, French (France), Hebrew, Japanese, and Kabyle. These updates, largely driven by Weblate contributions, refresh the UI text for core application screens such as the About page, Batch Document processing, and asynchronous file loading, ensuring that users see the latest translated strings in their respective languages.
dev-tools/i18n/release · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 32 → 39 (+7.6)
- Rubric changed (rubric-2026.08.15 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 43 → 86 (+43.1)
- Architecture 96 → 99 (+3.6)
- Maturity 44 → 43 (-1.0)
- Readiness 11 → 17 (+6.2)
- Security 60 → 61 (+0.5)
Resolved (19)
- Dimension evaluation failed
- Duplicated block (19 lines × 2) (UmiOCR-data/py_src/server/cmd_server.py)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- No exposed public API
- early-stage repository — too little history to judge knowledge freshness
- single-commit history — no usable git history window to measure hotspots
- single-maintainer — knowledge-concentration (bus factor) risk
- 缺少关于如何在 Windows7 x64 上安装和运行 Umi-OCR 的具体步骤(如解压后配置文件路径) (README.md)
New (92)
- BaseRequest._iter_chunked (cognitive 23) (UmiOCR-data/py_src/server/bottle.py)
- BatchDOC._initOutputList (cognitive 17) (UmiOCR-data/py_src/tag_pages/BatchDOC.py)
- BatchDOC._onEnd (cognitive 16) (UmiOCR-data/py_src/tag_pages/BatchDOC.py)
- Bottle._cast (cognitive 25) (UmiOCR-data/py_src/server/bottle.py)
- Bottle._cast (cyclomatic 24) (UmiOCR-data/py_src/server/bottle.py)
- ConfigDict.load_dict (cognitive 19) (UmiOCR-data/py_src/server/bottle.py)
- Documentation: no installation or build instructions (README.md)
- Documentation: no project overview (README.md)
- Dormant codebase
- Duplicated block (10 lines × 2) (UmiOCR-data/py_src/imports/call_func.py)
- Duplicated block (12 lines × 2) (UmiOCR-data/py_src/tag_pages/BatchDOC.py)
- Duplicated block (17 lines × 2) (UmiOCR-data/py_src/tag_pages/tag_pages_connector.py)
- Duplicated block (23 lines × 2) (UmiOCR-data/py_src/server/doc_server.py)
- Duplicated block (5 lines × 2) (UmiOCR-data/py_src/mission/doc_preview_connector.py)
- Duplicated block (7 lines × 2) (UmiOCR-data/py_src/imports/call_func.py)
- Duplicated block (7 lines × 2) (UmiOCR-data/py_src/imports/call_func.py)
- Duplicated block (7 lines × 3) (UmiOCR-data/py_src/ocr/output/output_jsonl.py)
- Duplicated block (8 lines × 2) (UmiOCR-data/py_src/platform/linux/linux_api.py)
- FileCheckerThread.run (cognitive 17) (UmiOCR-data/py_src/server/bottle.py)
- FileTooLong: release/en_US.ts (dev-tools/i18n/release/en_US.ts)
- …and 72 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
hiroi-sora/Umi-OCR was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 26 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 83173efc4f4453b41223ea96d63d44534bf0505c — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-09659c52afae.