Handnotes to markdown in seconds
Project description
Handmark
Handmark is a Python CLI tool that converts handwritten notes from images into Markdown files. It uses Azure AI to process images and extract text, making it easy to digitize handwritten content.
Features
- Converts images of handwritten notes to Markdown format
- Intelligent title extraction from content
- Easy-to-use CLI interface
- Uses Azure AI for accurate image processing
- Automatically formats output as valid Markdown
Installation
pip install handmark
You can also install using uv:
uv pip install handmark
Usage
Handmark provides a simple CLI with the following commands:
Process an Image
handmark digest <image_path> [options]
Options:
-o, --output <directory>- Specify output directory (default: current directory)--filename <name>- Custom output filename (default: response.md)
Configure Authentication
handmark auth
This will prompt you to enter your GitHub token, which is required for Azure AI integration. The token is securely stored in a .env file in the project directory.
Check Version
handmark --version
Example
Here's a real-world example of Handmark in action:
Input image (samples/prova.jpeg):
Output (prova-response.md):
# Primeiro Exercício Escolar - 2025.1
Leia atentamente todas as questões antes de começar a prova. As respostas obtidas somente terão validade se respondidas nas folhas entregues. Os cálculos podem ser escritos a lápis e em qualquer ordem. Evite usar material eletrônico durante a prova, não sendo permitido o uso de calculadora programável para validá-lo. Não é permitido o uso de celular em sala.
---
1. (2 pontos) Determine a equação do plano tangente à função f(x,y) = √(20 - x² - 7y²) em (2,1). Em seguida, calcule um valor aproximado para f(1.9, 1.1).
2. (2 pontos) Determine a derivada direcional de f(x,y) = (xy)^(1/2) em P(2,2), na direção de Q(5,4).
3. (2 pontos) Determine e classifique os extremos de f(x,y) = x⁴ + y⁴ - 4xy + 2.
4. (2 pontos) Usando integrais duplas, calcule o volume acima de onde z = 0 e abaixo da superfície z = x² + y² + 2.
5. (2 pontos) Sabendo que E é o volume do sólido delimitado pelo cilindro parabólico z = x² + y² e pelo plano z = 1, apresente um esboço deste volume e calcule o valor de E.
The output is saved as a Markdown file with a filename derived from the detected title.
Development
Prerequisites
- Python 3.10 or higher
- A GitHub token for Azure AI integration
Setup
-
Clone the repository:
git clone https://github.com/devgabrielsborges/handmark.git cd handmark
-
Install dependencies:
pip install -e .
Running Tests
pytest
Project Structure
src/- Source codemain.py- CLI interfacedissector.py- Image processing and API interactionutils.py- Helper functions
samples/- Sample images for testingtests/- Unit tests
License
This project is licensed under the MIT License - see the LICENSE file for details.
Author
- Gabriel Borges (@devgabrielsborges)
Last updated: May 20, 2025
Contributing
Contributions are welcome! Please open an issue or submit a pull request.
License
This project is licensed under the MIT License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file handmark-0.3.1.tar.gz.
File metadata
- Download URL: handmark-0.3.1.tar.gz
- Upload date:
- Size: 10.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7fe52bbf3bf868b21977dc737790e569ee97e7d2b33c4435b28a953f2b516212
|
|
| MD5 |
00d42a69d603bd0a311bd0479be0218a
|
|
| BLAKE2b-256 |
59a389187ae2147d92e1a61b70b86c8e8b225b7da650330c3912c0cc33562a28
|
File details
Details for the file handmark-0.3.1-py3-none-any.whl.
File metadata
- Download URL: handmark-0.3.1-py3-none-any.whl
- Upload date:
- Size: 7.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
98e02b8b90dc0155f3d3b3393a0276088bb8b7e42376bb940d7bafe3a4ec2690
|
|
| MD5 |
86d6dee5f658f0113b1bf6ed6d54cf43
|
|
| BLAKE2b-256 |
b86d86894c64b89ca57685fd2534d1904b0193e1cd2b87c6b1feb5e07de5df4e
|