Back to the blog

Text tools

From screenshot to finished text: OCR, translation, AI, and TextWorkbench

A hands-on guide to turning copied images and text into searchable, translated, cleaned, and editable output without overwriting history.

Syzygy teamPublished 9 min read
  • #OCR
  • #translation
  • #AI tools
  • #text cleanup
  • #TextWorkbench
  • #clipboard
On this page
Syzygy text tools
Syzygy text tools

A screenshot can contain a phone number. A PDF can contain a paragraph. A copied block can contain five blank lines. The next task is usually small.

Find the words. Translate them. Clean them. Edit them.

Keep the original for comparison. Syzygy joins those steps around one clipboard item. OCR handles pixels. Translate handles language.

AI handles configured assistance. TextWorkbench handles repeatable text operations. Edit creates a new history snapshot.

A tool should state what it needs

The button label is not enough. OCR needs an image or a rendered image. Translation needs source text. AI needs a profile and an allowed input.

TextWorkbench needs a complete semantic source. External editing needs a local file. The item plan states the capability. The runtime checks the prerequisite.

The UI shows the waiting state. The backend performs the final validation. This sequence keeps a disabled action understandable. It also prevents a partial result from looking like a completed edit.

OCR starts with the best available text

PDFs often contain a text layer. Syzygy reads that layer first. An image has no text layer. The service prepares the image for recognition.

It can resize a large image. It sends the image to PaddleOCR or Tesseract. It receives text and bounding boxes. It maps boxes back to the original coordinates.

It groups output by language when the provider returns that signal. The result becomes a structured OCR record. The search index can use the text. The preview can use the coordinates.

The original image remains unchanged.

Why PDF text comes before PDF OCR

Text-native PDFs already expose characters. Rendering those pages for OCR adds cost. Embedded extraction returns faster. Scanned PDFs can have an empty text layer.

The service then renders a bounded number of pages. The current default covers the first two pages. The PDF size limit is 32 MiB. The limit protects the desktop from accidental large transfers.

It also makes latency easier to explain. The OCR result supplements the PDF. It does not rewrite the PDF file.

OCR cache keys make results reproducible

The same image can be recognized with different languages. The same language can use different providers. A new engine can produce different boxes. A new resize limit can change text detection.

The cache key therefore includes the content hash. It includes the provider. It includes the language. It includes the pixel limit.

It includes the engine key. It includes the coordinate version. Changing one value selects a new cache entry. The cache also uses a TTL.

The cache also uses a maximum entry count. Expired entries leave history untouched.

Translation uses a profile, not a hidden default

Create a translation profile. Choose a provider. Choose a source language. Choose a target language.

Test the profile. Select the profile in the translate sheet. The sheet checks the source content. It checks the target language.

It checks the Translate capability. It checks local materialization. It submits bounded text. It reports provider errors.

It returns translated output. The source remains available. The translated text can become a new snapshot. The user chooses whether to copy or edit it.

Files need a source selection

A collection can contain several files. The translation sheet cannot guess which file you mean. Select the file entry first. Confirm its content family.

Confirm that its source is local. Choose the language pair. Run the translation. The result belongs to the selected source.

Two files with the same basename remain distinct. The content hash and occurrence identify the selected file.

AI follows the same guardrails

AI profiles store provider settings. They can test a profile. They can list available models. They can run an allowed action.

AI auto-tagging returns suggestions. The user chooses the final tags. The normal tag update persists them. AI cannot bypass color validation.

AI cannot bypass rename validation. AI cannot write an item that the user cannot edit. An AI error names the failed boundary. The user can change the profile or retry.

TextWorkbench keeps operations repeatable

TextWorkbench uses named rules. The rule list stays small. Uppercase changes letter case. Lowercase changes letter case.

Capitalize adjusts word starts. Trim removes outer whitespace. Collapse spaces reduces repeated spaces. Remove blank lines removes empty rows.

Remove line breaks creates a single line. Sort lines orders rows. Reverse lines reverses rows. Deduplicate lines removes repeated rows.

JSON pretty formats a JSON value. JSON compact removes formatting whitespace. URL encode escapes a URL value. URL decode reads an encoded URL.

Base64 encode produces Base64. Base64 decode reads Base64. Each rule has a clear input. Each rule has a clear output.

Each rule can fail with a named reason.

Local preview before save

The desktop can calculate a preview locally. The source remains visible. The output remains visible. The user can cancel.

The backend receives the final request. The backend checks the same rule. The backend rejects unsupported input. It rejects incomplete input.

It rejects oversized input. It rejects invalid encoding. It rejects empty output. The result is not saved when validation fails.

The original item stays unchanged.

Save creates a new snapshot

An edit does not mutate an old history record. The operation creates output text. It creates a new history snapshot. It emits a history event.

The read model refreshes. Search receives a new index job. The user can compare source and output. The user can tag the new snapshot.

The user can send it to another device. The original remains available for audit.

A real workflow: translate a screenshot

Capture a screenshot of a foreign-language notice. Open the image preview. Choose OCR. Wait for text and boxes.

Review the extracted text. Open Translate. Choose the source language. Choose the target language.

Run the profile. Compare source and translation. Copy the translated text. Optionally save a new snapshot.

Keep the image as the visual reference. The OCR result helps the translation. The translation does not replace the image.

A real workflow: clean an API response

Copy a JSON response. Open TextWorkbench. Choose JSON pretty. Review the local output.

Choose a line operation if needed. Copy the result into a ticket. Save a snapshot when the cleaned response deserves history. Keep the original response for comparison.

Tag the result with the project name. Search the project later.

A real workflow: edit an SVG source

Copy an SVG source from a design tool. Open its graphic preview. Switch to source. Confirm the source marker.

Open TextWorkbench. Run trim or collapse spaces. Review the output. Save a new snapshot.

Open the graphic view again. The source operation changes text. The renderer still uses the graphic family.

A real workflow: AI tag suggestions

Copy a research note. Open the tag editor. Ask for AI suggestions. Review each suggestion.

Remove a broad or incorrect term. Choose a persistent color. Save the selected tags. Search the tags later.

AI saves no hidden relationship. The final update remains visible.

Error states that help you recover

unavailable means the feature cannot run in the current state. unsupported means the input family has no operation. too large means the input exceeds the configured limit. incomplete means the payload is still pending.

invalid encoding means the source cannot be decoded safely. empty output means the rule produced no content. Provider timeout means the external service did not answer in time. Quota exceeded means the account policy blocked the request.

The UI should show the next action. Download the content. Choose another profile. Reduce the input.

Fix the encoding. Try again later.

Troubleshooting OCR

OCR returns no text

Check the source image. Check the image dimensions. Check the language hint. Check the provider configuration.

Check the image size limit. Try the rendered PNG for a source graphic. Keep the original image for comparison.

Boxes do not align

Check whether the image was resized. Check the coordinate version. Check the renderer output dimensions. The result should map boxes to the original image coordinates.

PDF OCR stops early

Check the page limit. The current default covers two pages. Check the 32 MiB PDF limit. Use a smaller PDF or extract a relevant page.

Troubleshooting translation

Translation is disabled

Check the Translate capability. Check that source text is complete. Check the selected file entry. Check the provider profile.

Check the target language.

Translation returns the wrong file

Open the collection. Select the file entry. Confirm the occurrence. Confirm the content preview.

Run translation again. The basename alone is not a stable identity.

Troubleshooting TextWorkbench

The editor does not open

Check the Edit capability. Check local materialization. Check the source family. Binary images need OCR, not text editing.

Binary Figma files need a visual editor.

Save returns empty output

Check the selected rule. Check the input whitespace. Choose another rule. The backend rejects empty snapshots.

The output replaced my original

The intended behavior creates a new snapshot. Refresh history. Compare the source and output. Report a state mismatch with both item identities.

Questions people ask

Does OCR need a cloud service?

The available provider depends on configuration. The history item remains local. Provider traffic follows the configured OCR boundary.

Does TextWorkbench edit a screenshot?

It edits text source. Use OCR to create text from a screenshot first. The screenshot remains unchanged.

Can I translate a PDF layout?

Translation operates on extracted source text. The PDF preview keeps the original layout.

Does AI auto-tag save immediately?

AI returns suggestions. The user confirms the final tags.

Can I undo a saved edit?

The original history item remains available. Select it when you need the source.

Why reject empty output?

An empty snapshot hides whether the rule or the input failed. The explicit error keeps history clean.

Can I run several translation profiles?

Profiles can run in parallel when the workflow allows it. Each result keeps its source and target settings.

Can a binary Figma file enter TextWorkbench?

It has no source text representation. Use a Figma clipboard source for text operations.

Does OCR change search results?

OCR adds searchable text to the index. It does not change the original visual item.

Do rules depend on the UI language?

Rule ids remain stable. Labels can be translated.

Verification checklist

Run OCR on a screenshot. Search an extracted word. Translate the result. Copy the translation.

Run JSON pretty on a response. Save a new snapshot. Confirm the original remains. Edit an SVG source.

Open its graphic preview. Ask AI for tag suggestions. Save one selected tag. Restart the desktop.

Confirm the saved snapshot and tag remain.

Continue reading

Read clipboard content types for source and capability rules. Read OCR and search for indexing extracted text. Read tags and Trash for the next organization step. Text tools work best when the original stays visible and each output has a clear owner.