Skip to content

Repository files navigation

FPInk

An Android app for capturing handwritten fountain-pen notes, recognizing text, and preserving detected ink colours. This public build is 100% offline and FOSS: two bundled on-device recognition strategies are available. Cursive (the default) targets handwriting and Printed targets printed text. Choose the default under Settings → Default recognition; when capturing with the camera, you can also pick a strategy for that one photo.

Correcting captured notes

After a new image is recognized and saved, the app opens a review screen containing every generated paragraph note. Correct any transcription in place, then choose Done to save the changed notes and return to the list. Leaving with unsaved corrections asks for confirmation; discarding those corrections does not remove the already captured notes.

Selecting and deleting notes

Press and hold a note in the list to select it. Tap rows or their checkboxes to change the selection, or use Select all to select every note in the list, including those off screen. Clear the last selection or press Back to return to opening notes normally.

Choose Delete selected and confirm once to permanently delete the selection. Shared source images remain until their last note is deleted. If deletion fails, the app stops and keeps remaining notes selected after refreshing; review the selection before trying again. If refresh fails, use Retry first.

Searching and filtering notes

Tap the search icon in the notes list to search note text, tags and ink colour names. The search is fuzzy: it ignores case and accents and tolerates small recognition typos. Every word you type must match. While a search is active, results are ranked by relevance (within each type section when Zettelkasten organisation is enabled); clear the search to return to date order. When Zettelkasten organisation is enabled, use the Fleeting, Literature and Permanent chips to show only those types. With no chip selected, every type is shown. Select all and other selection actions apply only to the notes that are visible.

Exporting to Obsidian

Choose Export all to Markdown vault from the notes list's overflow menu. To export only some notes, select them and choose Share selected → Markdown vault (Obsidian). Pick where to save the .zip, then unzip it and open the folder as an Obsidian vault. Logseq, Zettlr, Foam and other Markdown tools can open it too. Each note becomes a Markdown file with YAML front matter: creation time, type, tags, ink colour and recognition details. Each file embeds its source image from attachments/, and links between notes become [[wikilinks]]. FPInk index.md lists every exported note. When Zettelkasten organisation is enabled, notes go into Fleeting/, Literature/ and Permanent/ folders and are tagged zettelkasten/<type>. The export stays on the device; FPInk only writes to the location you pick.

Build and releases

Use JDK 17 and Android SDK 37. Run .\gradlew.bat build on Windows or ./gradlew build on Linux. The published APK contains arm64-v8a native code only, so it installs on ARM64 devices. Both strategies run on ONNX Runtime with bundled, SHA-256-pinned models: the official PP-OCRv6 small detector and medium recognizer (Printed), and a Kraken PP-OCRv6-medium recognizer (Cursive). The app never downloads or substitutes model bytes at runtime. The public build requests no network permissions. Release builds run on ONNX Runtime built from source with telemetry compiled out (recognition/onnxruntime), and ONNX Runtime's telemetry initializer is removed from every build. Release builds are shrunk with R8.

See architecture, bundled recognition models, recognition strategies, release setup and versioning, and the F-Droid submission and maintenance runbook.

License

Copyright (C) 2026 FPInk contributors.

FPInk's original source code is licensed under the GNU General Public License, version 3 only (GPL-3.0-only). You may redistribute and modify it under those terms. FPInk comes without any warranty, including implied warranties of merchantability or fitness for a particular purpose. See LICENSE for the complete terms.

Third-party dependencies and bundled assets retain their own licenses; this does not relicense their authors' work. Model provenance, licences, bundled notices and current limitations are documented in recognition/models. When distributing an APK, provide its corresponding source and preserve those notices; the release workflow links each APK to its exact tagged source.

About

Note recognition app for fountain pen

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages