From 9cf63168da4ca3a3d6822e4fe126c77eb0e96275 Mon Sep 17 00:00:00 2001 From: Laurent Cozic Date: Thu, 4 Jan 2024 16:17:20 +0000 Subject: [PATCH] Doc: Added documentation for OCR --- .../images/ocr/search_results.png | Bin 0 -> 40889 bytes readme/apps/ocr.md | 31 ++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 Assets/WebsiteAssets/images/ocr/search_results.png create mode 100644 readme/apps/ocr.md diff --git a/Assets/WebsiteAssets/images/ocr/search_results.png b/Assets/WebsiteAssets/images/ocr/search_results.png new file mode 100644 index 0000000000000000000000000000000000000000..858a463d51021e8e53874a33eaae79874eac5274 GIT binary patch literal 40889 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 + +Searching in OCR text is enabled on the desktop and mobile app. Scanning documents however is only available on the desktop app since this is a relatively resource-intensive process. The mobile app will have access to that OCR data via sync. + +For now OCR is reliable when scanning printed text, PDFs in particular, or images where the text is clear such as screenshots. We do not currently support handwritten text, and text on photos may or may not be recognized depending on how clear it is. + +## Initial processing + +As mentioned above processing images and PDF may be resource intensive, especially if you have a lot of attachments. So the first time you enable the feature don't be surprised if Joplin CPU usage is higher than usual. Once the initial scan of all your attachments is done, this will go back to normal. Late,r whenever you attach a file it will be scanned quickly in a way that's not noticeable. + +## Offline first + +As always, Joplin is offline first which means OCR too happens offline without the need for an internet connection and, more importantly, without the need to upload your private data to a third party cloud. The drawback is the aforementioned initial use of your computer's resources, but we believe this is worth it to enable full offline support. + +## Pluggable system + +OCR is a technology that evolves rapidly especially with the recent advances in AI and large language model (LLM) in particular. As such Joplin OCR is designed to be pluggable. We will monitor the existing open source OCR technologies and may switch to a different one if it makes sense, or provide support for multiple ones. + +Additionally in some cases it may make sense to use a cloud-based solution, or simply connect to your self-hosted or intranet-based server for OCR. The current system will allow this by writing specific drivers for these services. + +This pluggable interface is present in the software but not currently exposed. We will do so depending on feedback we receive and potential use cases. If you have any specific use case in mind or notice any issue with the current OCR system feel free to let us know [on the forum](https://discourse.joplinapp.org/).