User Manual
This page is an operation guide for ClarityPDF based on the current Android implementation. It is adapted from the in-app documentation for the public site.
Related document: Privacy policy
1. Common
- The home screen has 4 categories: "Create & edit PDF / Convert & compose PDF / OCR & AI-OCR / Settings". Tap a category to see its tools.
- Input files are read-only; the original is never modified. Results are always saved as new files.
- Choose the output location in each screen's "Output folder". If unset, files are saved to "Download/PDFToolkit" on the device.
2. Edit PDF (add text/images, edit existing text)
- Open a PDF with "Choose PDF", or make an empty A4 with "Start from blank". When creating a new document, you can choose the page size and background color.
- The preview stays fixed as a canvas; use the toolbox at the bottom to move between pages and pick each action.
- Add text: pick "Text" from the toolbox, type into the floating window (line breaks allowed), set size / color / font / bold / italic / underline / rotation / URL, then "Add". It is placed on the preview; drag to move it.
- Add an image: choose one under "Image" and it is placed on the preview. Drag to move it; you can also scale and rotate it.
- Edit existing text: tap text on the preview, or select it from the "Layers" list. Enter "Replacement text", or choose "Delete the original text". You can also change size / color / styling.
- If the font and character set match, it is replaced in place.
- For characters that can't be shown, moves, or size/color/style/font changes, the whole run is redrawn, keeping the original size and color (using the chosen font).
- Add shapes: use the "Shape" tool to place a rectangle or oval — configure stroke color, fill color, and line width, then drag on the canvas to position it.
- Draw: use the "Draw" tool with the brush or eraser to draw freehand on the canvas. Tap "Apply" to commit to the PDF.
- Background color: use the "BG" tool to set a background color for the current page (existing content is preserved).
- Layers: added/edited items and recognized objects on the page are listed under "Layers". Tap a row to select it, or × to remove it.
- Tapping "Apply" in each menu, or in the Layers list, bakes the current edits into a temporary PDF and refreshes the preview with the real appearance.
- "Apply and save" outputs the final PDF. "Undo" reverts the most recent committed operation.
* Adding/editing text needs an embedded font. Choose from Noto Sans JP / Noto Serif JP / M PLUS Rounded 1c / Zen Kaku Gothic New / Klee One (all SIL OFL), per text run. Each font downloads once, then works offline; get missing ones from the editor or Settings.
3. Convert & compose PDF
- Split (extract pages): open a PDF, select the pages to extract, then choose "combine into one" or "one per page" and export.
- Merge: choose several PDFs, arrange the order, and combine into one.
- Reorder: drag thumbnails to change the page order and save as a new PDF.
- PDF to images: convert each page to PNG / JPEG. You can set the DPI (resolution).
- Images to PDF: choose several images, set the order, and combine into one PDF.
4. OCR / AI-OCR
- OCR / text extraction: extract text from PDFs/images. Embedded text (already in the file) and OCR (image recognition) are distinguished, and can also be exported as JSON. Engines: Tesseract / PaddleOCR / local LLM Vision, with Japanese, English, Simplified Chinese, and Korean recognition. Large documents can run in the background.
- PDF summary: summarize the whole file or per page with an LLM. Choose "OCR→LLM" or "Vision (page images sent directly to the LLM)".
- AI Prompt: enter an arbitrary instruction (prompt) and run it over the whole PDF or per page. Choose "OCR→LLM" or "Vision".
5. Settings
- OCR settings and models: download Tesseract / PaddleOCR language models (Japanese, English, Chinese, Korean) and the editing fonts, and set the LLM (Ollama / OpenAI-compatible) connection URL, model, and connection test. Order is Tesseract → PaddleOCR → LLM.
- Launch LLM API: the "Launch LLM API" button starts the companion app (LLM Tester) API server, and a green/amber status tile shows the
/api/tagsreachability. - Language: switch the app display language. Supported languages: 日本語 / English / Français / Deutsch / Español / Italiano / Português / 中文(简体)/ 한국어.
- User manual / Privacy policy / Licenses: these documents (you can copy the body on each screen).
6. About offline use
- PDF and image processing run entirely on the device. The only network use is "the first download of OCR models / fonts" and "sending to the configured server when using an LLM" (the default LLM endpoint is
127.0.0.1on the device). - If you configure an external LLM server, page images and extracted text are sent there. The destination depends on your own settings.
7. Expert Mode — Local OCR API
Enable "Expert Mode" at the bottom of Settings → OCR Settings & Models to turn this device into an OCR API server. Other devices on the same LAN can then send OCR requests to it over HTTP.
⚠️ There is no authentication. Use only on trusted local networks.
Endpoints
| Purpose | URL |
|---|---|
| OCR request | POST http://<device-IP>:8765/ocr |
| From same device | POST http://127.0.0.1:8765/ocr |
| Health check | GET http://<device-IP>:8765/health |
Request (multipart/form-data)
| Field | Required | Description |
|---|---|---|
file | Yes | Image (PNG/JPEG/WebP/BMP) or PDF — sent as raw binary |
engine | No | tesseract (default) | paddleocr | llm |
lang | No | Language code(s), comma-separated (default: eng). e.g. jpn / jpn,eng / chi_sim / kor |
Response (HTTP 200)
{
"pages": [
{ "page": 1, "text": "Recognized text here", "confidence": 0.95, "source": "OCR" }
],
"engine": "Tesseract",
"languages": ["eng"],
"pageCount": 1
}
Errors
| HTTP | Body |
|---|---|
| 400 | {"error":"Missing 'file' field"} — no file field |
| 400 | {"error":"Could not decode image"} — invalid image data |
| 500 | {"error":"..."} — OCR processing error |
curl examples
# OCR a JPEG with English Tesseract
curl -X POST http://192.168.1.10:8765/ocr \
-F "file=@document.jpg" -F "engine=tesseract" -F "lang=eng"
# OCR a PDF with Japanese+English (multi-page)
curl -X POST http://192.168.1.10:8765/ocr \
-F "file=@scan.pdf;type=application/pdf" -F "lang=jpn,eng"
# Health check
curl http://192.168.1.10:8765/health
Python example
import requests
with open("document.pdf", "rb") as f:
resp = requests.post(
"http://192.168.1.10:8765/ocr",
files={"file": ("document.pdf", f, "application/pdf")},
data={"engine": "tesseract", "lang": "eng"},
)
result = resp.json()
for page in result["pages"]:
print(f"Page {page['page']}: {page['text'][:80]}...")
Notes
- No authentication — use only on trusted local networks.
- Large PDFs may take several seconds to minutes per page.
- Notification permission is required to keep the service alive after a process kill. You can stop the server from the notification.
- Processing may be interrupted if the device goes to sleep.
engine=tesseractwithlang=jpnrequires the Tesseract Japanese model. PaddleOCR and LLM also require their respective models/settings.- Files are sent as raw binary in multipart/form-data — no Base64 encoding needed.