@@ -102,6 +102,7 @@ compared to traditional tools such as Tesseract.
102102- Bring-your-own endpoint support for any service that follows the
103103 OpenAI-compatible Chat Completions API
104104- Allows integration with services like:
105+
105106 - [ DeepInfra] ( https://deepinfra.com )
106107 - [ Fireworks.ai] ( https://fireworks.ai )
107108 - [ Together.ai] ( https://together.ai )
@@ -129,24 +130,44 @@ compared to traditional tools such as Tesseract.
129130 - Replace image embed
130131 - Insert at cursor
131132 - Create or append to another note
132- - Optional header template with dynamic timestamp formatting
133- - File/folder naming templates using [ moment.js ] ( https://momentjs.com/docs/#/displaying/format/ )
134- - Extract from embedded images or via OS-native file picker
133+ - Header and footer template creation with ` {{placeholder}} ` support
134+ - File/folder naming template creation with ` {{placeholder}} ` support
135+ - Extract from embedded images or via OS-native file/folder pickers
135136- Built-in CORS proxy fallback for external images
136137
138+ > [ !NOTE]
139+ > Support for ` {{placeholder}} ` options is still being tested.
140+ > Unexpected behavior may occur.
141+ > Refer to the
142+ > [ Wiki] ( https://github.com/rootiest/obsidian-ai-image-ocr/wiki/Templating )
143+ > for available placeholders.
144+ > Please report any placeholder issues or suggestions on GitHub.
145+
137146## Installation
138147
148+ ### Install via Obsidian Community Plugin Browser
149+
150+ > [ !NOTE]
151+ > This option is not yet available.
152+
153+ 1 . Open Obsidian settings.
154+ 2 . Under "Community plugins", ensure "Safe mode" is disabled.
155+ 3 . Click "Browse" to open the Community Plugin Browser.
156+ 4 . Search for "AI Image OCR".
157+ 5 . Click "Install" to download the plugin.
158+
139159### Install via BRAT
140160
141161If you have the [ BRAT] ( https://github.com/TfTHacker/obsidian42-brat ) plugin installed,
142162you can install this plugin using the BRAT plugin manager:
143163
144- 1 . Click ` Add beta plugin ` .
145- 2 . Enter ` https://github.com/rootiest/obsidian-ai-image-ocr `
164+ 1 . Open the BRAT plugin settings.
165+ 2 . Click ` Add beta plugin ` .
166+ 3 . Enter ` https://github.com/rootiest/obsidian-ai-image-ocr `
146167 in the ` Repository URL ` field.
147- 3 . (Optionally) Check the ` Enable after installing the plugin `
168+ 4 . (Optionally) Check the ` Enable after installing the plugin `
148169 checkbox to enable the plugin immediately after installation.
149- 4 . Click ` Add plugin `
170+ 5 . Click ` Add plugin `
150171
151172### Manual Installation
152173
@@ -162,33 +183,21 @@ and extract to your plugins directory.
162183
163184## Configuration
164185
165- ** These settings are required:**
166-
167186- Choose a model provider (` OpenAI ` , ` Gemini ` , ` Ollama ` , etc.)
168187- Select a model ID (e.g. ` gpt-4o ` , ` llava:13b ` , etc.)
169188- If using a cloud model, enter the corresponding API key
170189
171- ** Optional settings include:**
190+ Several addition optional configuration option are available with which
191+ you may customize the output behavior.
172192
173- - ** Header Template** : Markdown inserted before extracted text.
174- Can use ` {{YYYY-MM-DD HH:mm:ss}} ` for timestamps.
175- - ** Output to Another Note** : Extracted text can be routed to a new note.
176- - ** Folder Path** : Where to create the new note (if enabled).
177- - ** Filename Template** : Can include dynamic date/time formatting.
178- - ** Append or Overwrite** : Controls whether to reuse or recreate notes
179- with the same name.
193+ ` {{placeholder}} ` options are
194+ [ detailed in the wiki] ( https://github.com/rootiest/obsidian-ai-image-ocr/wiki/Templating ) .
180195
181196## Usage
182197
183- ### Output Behavior
184-
185- - Header template (if set) will be inserted before the extracted text.
186- - Output will go to a new note or current note depending on settings.
187- - If extracting from an embedded image, the embed will be replaced.
188-
189198### Open An Image For Extraction
190199
191- 1 . Use the command palette (` Ctrl+P ` ) and search for "Extract Text from Image ".
200+ 1 . Use the command palette (` Ctrl+P ` ) and search for "Extract text from image ".
1922012 . Select an image file.
1932023 . Text will be extracted and inserted per your configuration.
194203
@@ -199,6 +208,13 @@ and extract to your plugins directory.
1992083 . The nearest image above the cursor will be used as the source.
2002094 . The embed will be replaced by the extracted text.
201210
211+ ### Select A Folder For Extraction
212+
213+ 1 . Use the command palette (` Ctrl+P ` ) and search for
214+ "Extract text from image folder".
215+ 2 . Select a directory which contains images.
216+ 3 . Text will be extracted from each image and inserted per your configuration.
217+
202218## Notes
203219
204220> [ !TIP]
@@ -230,59 +246,15 @@ and extract to your plugins directory.
230246The following features are under consideration
231247for future releases of the plugin:
232248
233- ### Batch Image Processing
234-
235- - ** Extract from all embedded images** in a note at once.
236- - ** Process entire folders** of image files (e.g., screenshots, scans).
237- - ** Configurable output** options for batch mode:
238- - Combine all results into the active note.
239- - Create a new note for each image.
240- - Optionally include image filenames as headings or titles.
241- - Separate output configuration for single and batched extractions.
242-
243- ### Multi-image Request Batching
244-
245- When performing batched image processing:
246-
247- - ** Send multiple images in a single API request**
248- to reduce latency and API overhead.
249- - Use a defined ** separator string** between images'
250- OCR results for reliable parsing into output.
251- - Improve efficiency and lower cost when working with high-volume image sets.
252-
253- ### Enhanced Output Templates
254-
255- Use the following dynamic properties in addition to date-time
256- in output templates:
257-
258- - ** Model and Provider names** : Use ` {{model}} ` or ` {{provider}} `
259- in output templates.
260- - ** Image metadata** : Use image metadata in output templates, such as:
261- - ` {{image.filename}} ` for the original filename
262- - ` {{image.path}} ` for the full path of the image
263- - ` {{image.size}} ` for the image size in bytes
264- - ` {{image.dimensions}} ` for the image dimensions (e.g., "1920x1080")
265- - ` {{image.width}} ` for the image width
266- - ` {{image.height}} ` for the image height
267- - ` {{image.created}} ` for the image file creation date
268- - ` {{image.modified}} ` for the image file last modified date
269- - ** Note properties** : When outputting to a note, use:
270- - ` {{note.title}} ` for the note title
271- - ` {{note.path}} ` for the note path
272- - ` {{note.created}} ` for the note creation date
273- - ` {{note.modified}} ` for the note last modified date
274- - ` {{note.frontmatter.key}} ` for any frontmatter key-value pairs
275- - ** Other metadata** :
276- Any other relevant metadata that can be extracted from
277- the image file or note.
278-
279- ### Other Potential Enhancements
280-
281- - ** Custom provider name** : Allow custom naming when using custom provider.
282- - ** Custom model name** : Allow setting a custom name for any model used.
283- - ** Preview before extract** : Show a list of matched images before running OCR.
284- - ** Hide or obfuscate API keys** : Hide or obfuscate API keys in settings.
285- - ** Support for more OCR models** , including local or offline alternatives.
249+ ### Extend Placeholder Support
250+
251+ - Add ` created ` /` modified ` placeholders for images.
252+ - Support moment.js formatting of image placeholders.
253+ - Add other ` {{placeholder}} ` options.
254+
255+ ### Reverse Placeholder Support
256+
257+ - Support using a keyword to indicate where extracted text should be place in a note.
286258
287259> [ !NOTE]
288260> These goals are exploratory and may evolve based on user feedback and
0 commit comments