Metadata-Version: 2.4
Name: glm-ocr-cli
Version: 0.0.1
Summary: GLM-OCR PDF/Image to Markdown conversion CLI.
License-Expression: MIT
License-File: LICENSE
Requires-Python: >=3.14
Requires-Dist: anyio>=4.10.0
Requires-Dist: httpx>=0.28.1
Requires-Dist: pillow>=11.0.0
Requires-Dist: pydantic-settings>=2.11.0
Requires-Dist: pydantic>=2.12.0
Requires-Dist: pypdfium2>=5.0.0
Requires-Dist: returns>=0.26.0
Requires-Dist: rich>=14.2.0
Requires-Dist: typer>=0.20.0
Description-Content-Type: text/markdown

# glm-ocr-cli

GLM-OCR PDF/Image to Markdown conversion CLI.

## Usage

```bash
# Convert local PDF/image file
uvx glm-ocr-cli convert path ./path/to/file.pdf

# Convert PDF/image URL
uvx glm-ocr-cli convert url https://example.com/file.pdf

# Show all commands
uvx glm-ocr-cli --help
```

## Output Layout

Outputs are saved under `~/.glm-ocr-cli/`.

```text
~/.glm-ocr-cli/
├── history.json
└── converts/
    └── md/
        └── {sha256_16}/
            ├── main.md
            ├── result.json
            ├── original.md
            └── images/
```

## Configuration

Config path follows the XDG Base Directory Specification:

```text
~/.config/glm-ocr-cli/config.toml
```

See [`config.example.toml`](config.example.toml) for all available options.

## Development

```bash
just setup-dev
```

### Tooling

- Runtime: [uv](https://docs.astral.sh/uv/)
- JS/TS: [Biome](https://biomejs.dev/)
- Python: [Ruff](https://docs.astral.sh/ruff/), [mypy](https://mypy-lang.org/), [pytest](https://docs.pytest.org/), [Poe](https://github.com/nat-n/poethepoet)
- Project template: [Copier](https://copier.readthedocs.io/)
- Task runner: [just](https://github.com/casey/just)
- Git hooks: [Lefthook](https://github.com/evilmartians/lefthook)

## Dependencies

Automated via [Renovate](https://docs.renovatebot.com/).
Dependency update PRs are created automatically.

## Release

Automated via [release-please](https://github.com/googleapis/release-please).
Merge the auto-generated Release PR to bump version, update [`CHANGELOG.md`](CHANGELOG.md), and create a tag.
