Inspiration
While conducting oracle bone script research, I found it frustrating and time-consuming to search different websites for every character. I wanted a faster and more organized way to compare ancient glyph forms, so I built WenGuCha—a small tool created from a real research need. As the Chinese saying goes: “Do it yourself, and you will be well provided for.”
What it does
WenGuCha is an ancient Chinese character query and recognition app for macOS and Windows.
Users can search with a simplified, traditional, or variant Chinese character and view its ancient forms grouped by historical period, including oracle bone script, bronze inscriptions, Warring States script, and small seal script. Each entry may include its image, source, reference number, transcription, historical period, notes, and an explanation of the character’s meaning.
The app also allows users to upload an image of an ancient character. Its OCR system returns the five most likely candidates with confidence scores instead of presenting uncertain results as definitive answers. Selecting a candidate opens the corresponding character entry directly. The app includes: Simplified and traditional Chinese interface modes Variant-character search More than 5,000 character records and 6,000 glyph records Period-based classification and explanations Local OCR recognition with top-five candidates Confidence scores for recognition results Light and dark appearance modes A searchable catalogue of all included characters Fully local data storage for offline use
How we built it
The macOS version was built natively with Swift and SwiftUI. The Windows version was developed with C#, .NET, and Avalonia UI, providing a Fluent-style experience on both Windows 10 and Windows 11.
Character metadata and search aliases are stored in SQLite. The OCR pipeline combines a detection model for locating ancient glyphs and a recognition model for classifying them. The models were converted to ONNX so that inference could run locally and consistently across platforms.
The application separates its interface, character database, search normalization, and OCR inference components. This makes it easier to expand the database or replace the recognition model without rebuilding the entire application.
Challenges we ran into
One major challenge was that the original OCR environment was designed for a Linux AMD64 Docker image, while the macOS version needed to run efficiently on Apple Silicon. Model conversion and input-output validation were therefore essential.
Another challenge was preserving the exact relationship between OCR class IDs and Chinese characters. We avoided guessing this mapping and only used verified recognition labels. We also had to normalize simplified, traditional, and variant forms without losing the original glyph information.
Maintaining the same functionality across macOS and Windows required additional work, especially for dark mode, scrolling behavior, text expansion, local database access, packaging, and OCR performance.
Accomplishments that we're proud of
We transformed an experimental OCR project into a complete desktop research tool with native installers for macOS, Windows x64, and Windows ARM64.
The application now combines structured historical data, character search, local image recognition, confidence-aware results, and cross-platform support in one clean interface. We are especially proud that all recognition happens locally and that uncertain OCR results are clearly presented as candidates rather than facts.
What we learned
This project taught us that building a useful research tool requires more than a recognition model. Reliable label mappings, historical metadata, variant-character normalization, transparent confidence scores, and a carefully designed search experience are equally important.
We also gained practical experience with SwiftUI, Avalonia, SQLite, ONNX Runtime, cross-platform packaging, model conversion, and interface testing across different operating systems.
What's next for WenGuCha-Ancient Character Query and Recognition App
Next, we plan to expand the collection with more rare characters, variant forms, verified sources, period-specific meanings, and higher-quality glyph images. We also hope to improve OCR accuracy through additional training data and support recognition of multiple characters in a single image.
Future versions may include advanced source filtering, side-by-side glyph comparison, personal research notes, data import tools, and links to authoritative paleographic resources.
Log in or sign up for Devpost to join the conversation.