diff --git a/api-reference/overview.mdx b/api-reference/overview.mdx
index a5747456..56ed784b 100644
--- a/api-reference/overview.mdx
+++ b/api-reference/overview.mdx
@@ -35,6 +35,8 @@ The Unstructured API provides the following benefits beyond the [Unstructured op
* Unstructured manages code dependencies, for instance for libraries such as Tesseract.
* Unstructured manages its own infrastructure, including parallelization and other performance optimizations.
+[Learn more](/open-source/introduction/overview#limits).
+
## Pricing
To call the Unstructured API, you must have an Unstructured account.
diff --git a/api-reference/partition/quickstart.mdx b/api-reference/partition/quickstart.mdx
index 6e94d26e..b481467e 100644
--- a/api-reference/partition/quickstart.mdx
+++ b/api-reference/partition/quickstart.mdx
@@ -8,6 +8,12 @@ sidebarTitle: Quickstart
[Skip ahead](https://colab.research.google.com/github/Unstructured-IO/notebooks/blob/main/notebooks/Unstructured_Partition_Endpoint_Quickstart.ipynb) to run this quickstart as a notebook on Google Colab now!
Do you want to just copy the sample code for use on your local machine? [Skip ahead](#sample-code) to the code now!
+
+ This quickstart uses the Unstructured Partition Endpoint and focuses on a single, local file for ease-of-use demonstration purposes. This quickstart also
+ focuses only on a limited set of Unstructured's full capabilities. To unlock the full feature set, as well as use Unstructured to do
+ large-scale batch processing of multiple files and semi-structured data that are stored in remote locations,
+ [skip over](/api-reference/workflow/overview#quickstart) to an expanded, advanced version of this quickstart that uses the
+ Unstructured Workflow Endpoint instead.
+
- The order of the nodes in the `workflow_nodes` array will be the same order that these nodes appear in the DAG,
with the first node in the array added directly after the **Source** node. The **Destination** node
@@ -1379,7 +1379,7 @@ An **Enrichment** node has a `type` of `prompter`.
[Learn about the available enrichments](/ui/enriching/overview).
-
+
#### Image Description task
@@ -1598,6 +1598,41 @@ Allowed values for `` include:
- `openai_ner`
- `anthropic_ner`
+#### Text Fidelity Optimization task
+
+import EnrichmentOCRHiResOnly from '/snippets/general-shared-text/enrichment-ocr-high-res-only.mdx';
+
+
+
+
+
+ ```python
+ text_fidelity_optimization_enrichment_workflow_node = WorkflowNode(
+ name="Enrichment",
+ subtype="",
+ type="prompter",
+ settings={}
+ )
+ ```
+
+
+ ```json
+ {
+ "name": "Enrichment",
+ "type": "prompter",
+ "subtype": "",
+ "settings": {}
+ }
+ ```
+
+
+
+Allowed values for `` include:
+
+- `anthropic_ocr`
+- `openai_ocr`
+- `vertexai_ocr`
+
### Chunker node
A **Chunker** node has a `type` of `chunk`.
diff --git a/docs.json b/docs.json
index 9a6c4d29..a08c2ef7 100644
--- a/docs.json
+++ b/docs.json
@@ -123,7 +123,8 @@
"ui/enriching/image-descriptions",
"ui/enriching/table-descriptions",
"ui/enriching/table-to-html",
- "ui/enriching/ner"
+ "ui/enriching/ner",
+ "ui/enriching/ocr"
]
},
"ui/embedding",
diff --git a/img/ui/single-file/apply-generative-refinement.png b/img/ui/single-file/apply-generative-refinement.png
new file mode 100644
index 00000000..88e9bd4b
Binary files /dev/null and b/img/ui/single-file/apply-generative-refinement.png differ
diff --git a/img/ui/single-file/bounding-box.png b/img/ui/single-file/bounding-box.png
new file mode 100644
index 00000000..b236acca
Binary files /dev/null and b/img/ui/single-file/bounding-box.png differ
diff --git a/img/ui/single-file/download.png b/img/ui/single-file/download.png
new file mode 100644
index 00000000..83c37f6b
Binary files /dev/null and b/img/ui/single-file/download.png differ
diff --git a/img/ui/single-file/generative-refinement.png b/img/ui/single-file/generative-refinement.png
new file mode 100644
index 00000000..15ece3ea
Binary files /dev/null and b/img/ui/single-file/generative-refinement.png differ
diff --git a/img/ui/single-file/get-code.png b/img/ui/single-file/get-code.png
new file mode 100644
index 00000000..e626b278
Binary files /dev/null and b/img/ui/single-file/get-code.png differ
diff --git a/img/ui/single-file/json-view.png b/img/ui/single-file/json-view.png
new file mode 100644
index 00000000..2065e100
Binary files /dev/null and b/img/ui/single-file/json-view.png differ
diff --git a/img/ui/single-file/partitioning-strategies.png b/img/ui/single-file/partitioning-strategies.png
new file mode 100644
index 00000000..d3d9b50f
Binary files /dev/null and b/img/ui/single-file/partitioning-strategies.png differ
diff --git a/img/ui/single-file/results.png b/img/ui/single-file/results.png
new file mode 100644
index 00000000..f9f370dc
Binary files /dev/null and b/img/ui/single-file/results.png differ
diff --git a/img/ui/single-file/show-all-bounding-boxes.png b/img/ui/single-file/show-all-bounding-boxes.png
new file mode 100644
index 00000000..54249628
Binary files /dev/null and b/img/ui/single-file/show-all-bounding-boxes.png differ
diff --git a/img/ui/single-file/smb-workflow.png b/img/ui/single-file/smb-workflow.png
new file mode 100644
index 00000000..7cc60e20
Binary files /dev/null and b/img/ui/single-file/smb-workflow.png differ
diff --git a/img/ui/single-file/welcome.png b/img/ui/single-file/welcome.png
new file mode 100644
index 00000000..b880048f
Binary files /dev/null and b/img/ui/single-file/welcome.png differ
diff --git a/img/ui/single-file/workflow-editor.png b/img/ui/single-file/workflow-editor.png
new file mode 100644
index 00000000..71b2e2fc
Binary files /dev/null and b/img/ui/single-file/workflow-editor.png differ
diff --git a/img/ui/walkthrough/EnrichedWorkflow.png b/img/ui/walkthrough/EnrichedWorkflow.png
index 886eabd6..7c002afc 100644
Binary files a/img/ui/walkthrough/EnrichedWorkflow.png and b/img/ui/walkthrough/EnrichedWorkflow.png differ
diff --git a/img/ui/walkthrough/GoToEnrichmentNode.png b/img/ui/walkthrough/GoToEnrichmentNode.png
index d91e2fbb..83440005 100644
Binary files a/img/ui/walkthrough/GoToEnrichmentNode.png and b/img/ui/walkthrough/GoToEnrichmentNode.png differ
diff --git a/img/ui/walkthrough/GoToTableToHTMLEnrichmentNode.png b/img/ui/walkthrough/GoToTableToHTMLEnrichmentNode.png
new file mode 100644
index 00000000..0c3f7da1
Binary files /dev/null and b/img/ui/walkthrough/GoToTableToHTMLEnrichmentNode.png differ
diff --git a/snippets/general-shared-text/enrichment-images-tables-hi-res-only.mdx b/snippets/general-shared-text/enrichment-images-tables-ocr-hi-res-only.mdx
similarity index 71%
rename from snippets/general-shared-text/enrichment-images-tables-hi-res-only.mdx
rename to snippets/general-shared-text/enrichment-images-tables-ocr-hi-res-only.mdx
index 2e03f83a..0bf3c0e8 100644
--- a/snippets/general-shared-text/enrichment-images-tables-hi-res-only.mdx
+++ b/snippets/general-shared-text/enrichment-images-tables-ocr-hi-res-only.mdx
@@ -1,8 +1,8 @@
- Unstructured can potentially generate image summary descriptions, table summary descriptions, and table-to-HTML output only for workflows that are configured as follows:
+ Unstructured can potentially generate image summary descriptions, table summary descriptions, table-to-HTML output, and text fidelity optimization, only for workflows that are configured as follows:
- - With a **Partitioner** node set to use the **Auto** or **High Res** partitioning strategy, and an image summary description node, table summary description node, or table-to-HTML output node is added.
- - With a **Partitioner** node set to use the **VLM** partitioning strategy. No image summary description node, table summary description node, or table-to-HTML output node is needed (or allowed).
+ - With a **Partitioner** node set to use the **Auto** or **High Res** partitioning strategy, and an image summary description node, table summary description node, table-to-HTML output node, or text fidelity optimization node is added.
+ - With a **Partitioner** node set to use the **VLM** partitioning strategy. No image summary description node, table summary description node, table-to-HTML output node, or text fidelity optimization node is needed (or allowed).
Even with these configurations, Unstructured actually generates image summary descriptions, table summary descriptions, and table-to-HTML output only for files that contain images or tables and are also eligible
for processing with the following partitioning strategies:
@@ -14,4 +14,6 @@
- With a **Partitioner** node set to use the **Fast** partitioning strategy.
- With a **Partitioner** node set to use the **Auto**, **High Res**, or **VLM** partitioning strategy, for all files that Unstructured encounters that do not contain images or tables.
+
+ Unstructured never generates text fidelity optimizations for workflows with a **Partitioner** node set to use the **Fast** partitioning strategy.
\ No newline at end of file
diff --git a/snippets/general-shared-text/enrichment-ocr-high-res-only.mdx b/snippets/general-shared-text/enrichment-ocr-high-res-only.mdx
new file mode 100644
index 00000000..f4ea34cb
--- /dev/null
+++ b/snippets/general-shared-text/enrichment-ocr-high-res-only.mdx
@@ -0,0 +1,8 @@
+
+ Unstructured can optimize text fidelity for workflows that are configured as follows:
+
+ - With a **Partitioner** node set to use the **Auto** or **High Res** partitioning strategy, and a text fidelity optimization node is added.
+ - With a **Partitioner** node set to use the **VLM** partitioning strategy. No text fidelity optimization node is needed (or allowed).
+
+ Unstructured never generates text fidelity optimizations for workflows with a **Partitioner** node set to use the **Fast** partitioning strategy.
+
\ No newline at end of file
diff --git a/snippets/general-shared-text/get-started-single-file-ui-part-2.mdx b/snippets/general-shared-text/get-started-single-file-ui-part-2.mdx
new file mode 100644
index 00000000..40517fe2
--- /dev/null
+++ b/snippets/general-shared-text/get-started-single-file-ui-part-2.mdx
@@ -0,0 +1,456 @@
+
+ This walkthrough is a follow-up to the [Unstructured UI quickstart](/welcome#unstructured-ui-quickstart).
+ However, you do not need to have completed the quickstart to start using this walkthrough.
+
+
+This walkthrough provides you with deeper, hands-on experience with the [Unstructured user interface (UI)](/ui/overview) than what was
+provided in the [Unstructured UI quickstart](/welcome#unstructured-ui-quickstart). As you follow along, you will learn how to use many of Unstructured's
+features for [partitioning](/ui/partitioning), [enriching](/ui/enriching/overview), [chunking](/ui/chunking), and [embedding](/ui/embedding). These features are optimized for turning
+your source documents and data into information that is well-tuned for
+[retrieval-augmented generation (RAG)](https://unstructured.io/blog/rag-whitepaper),
+[agentic AI](https://unstructured.io/problems-we-solve#powering-agentic-ai),
+and [model fine-tuning](https://www.geeksforgeeks.org/deep-learning/what-is-fine-tuning/).
+
+This walkthrough uses a sample file to demonstrate how Unstructured identifies and processes content such as image, graphs, complex tables, and non-English characters.
+This file, which is available for you to download to your local machine, is as follows:
+
+- Wang, Z., Liu, X., & Zhang, M. (2022, November 23).
+ _Breaking the Representation Bottleneck of Chinese Characters: Neural Machine Translation with Stroke Sequence Modeling_.
+ arXiv.org. https://arxiv.org/pdf/2211.12781. This 12-page PDF file features English and non-English characters, images, graphs, and complex tables.
+ Throughout this walkthrough, this file's title is shortened to "Chinese Characters" for brevity.
+
+
+ This walkthrough focuses on a local file for ease-of-use demonstration purposes.
+
+ This walkthrough does not cover how to use
+ Unstructured to set up [connectors](/ui/connectors) to do large-scale batch processing of multiple files and semi-structured data that are stored in remote locations.
+ To learn how to set up connectors and do large-scale batch processing later, see the [next steps](#next-steps) after you finish this walkthrough.
+
+
+If you are not able to complete any of the following steps, contact Unstructured Support at [support@unstructured.io](mailto:support@unstructured.io).
+
+
+ _What are these green boxes?_
+
+ As you move through this walkthrough, you will notice tips like this one. These tips are designed to help expand
+ your knowledge about Unstructured as you go. Feel free to skip these tips for now if you are in a hurry. You can always return to them later to learn more.
+
+
+## Step 1: Open the workflow editor
+
+After you complete the [Unstructured UI quickstart](/welcome#unstructured-ui-quickstart), the workflow editor
+should now be visible in your Unstructured account. The workflow editor should look like this:
+
+
+
+If the workflow editor is already visible, skip ahead to [Step 2](#step-2%3A-learn-about-workflows).
+
+If the workflow editor is not yet visible, do the following to show it:
+
+1. If you do not already have an Unstructured account, [sign up for free](https://unstructured.io/?modal=try-for-free).
+ After you sign up, you are automatically signed in to your new Unstructured **Starter** account, at [https://platform.unstructured.io](https://platform.unstructured.io).
+2. After you are signed in, the **Start** page appears.
+3. In the **Welcome** area, do one of the following:
+
+ - Click one of the sample files, such as **realestate.pdf**, to have Unstructured parse and transform that sample file.
+ - Click **Browse files**, and then browse to and select one of your own files, to have Unstructured parse and transform it.
+
+
+ If you choose to use your own file, the file must be 10 MB or less in size.
+
+
+ 
+
+4. Click **Edit in Workflow Editor** at the right on the title bar.
+
+ 
+
+## Step 2: Learn about workflows
+
+In this step, you learn about what [workflows](/ui/workflows) are and how they work in your Unstructured account.
+
+Workflows are defined sequences of processes that automate the flow of data from your source documents and data into Unstructured for processing.
+Unstructured then sends its processed data over into your destination file storage locations, databases, and vector stores. Your
+RAG apps, agents, and models can then use this processed data in those destinations to do things more quickly and accurately such as
+[answering users' questions](https://learn.microsoft.com/en-us/azure/developer/ai/advanced-retrieval-augmented-generation),
+[automating business processes](https://unstructured.io/problems-we-solve#business-process-automation),
+and [expanding your organization's available body of knowledge](http://knowledgemanagement.ie/the-critical-role-of-knowledge-management-as-a-foundation-for-llms-and-ai/).
+
+**_Which kinds of sources and destinations does Unstructured support?_**
+
+Unstructured can connect to many types of sources and destinations including file storage services such as Amazon S3 and Google Cloud Storage;
+databases such as PostgreSQL; and vector storage and database services such as MongoDB Atlas and Pinecone.
+
+See the full list of [supported source and destination connectors](/ui/connectors).
+
+**_Which kinds of files does Unstructured support?_**
+
+Unstructured can process a wide variety of file types including PDFs, word processing documents, spreadsheets, slide decks, HTML, image files, emails, and more.
+
+See the full list of [supported file types](/ui/supported-file-types).
+
+**_How do I access my existing workflows and create new ones?_**
+
+To access your existing workflows, and to create new workflows, on the sidebar, click **Workflows**. (Don't click it right now,
+though—you already have an existing workflow in progress!)
+
+
+
+**_What do the other buttons on the sidebar do?_**
+
+- **Start** takes you to the UI home page. The home page features a simple way to process one local file at a time with limited default settings. [Learn how](/welcome#unstructured-ui-quickstart).
+- **Connectors** allows you to create and manage your [source](/ui/sources/overview) and
+ [destination](/ui/destinations/overview) connectors.
+- **Jobs** allows you to see the results of your workflows that are run manually (on-demand) and automatically (on a regular time schedule). [Learn more](/ui/jobs).
+- **API Keys** allows you to use code to create and manage connectors, workflows, and jobs programmatically instead of by using the UI. [Learn more](/ui/account/api-key-url).
+- Your user icon at the bottom of the sidebar allows you to manage your Unstructured account. You can also sign out of your account from here. [Learn more](/ui/account/overview).
+
+**_What are all the parts of the workflow designer that I am looking at right now?_**
+
+The middle portion of the workflow designer is the workflow _directed acyclic graph_ (DAG), which contains a
+a collection of _nodes_ connected by _edges_ that go in only one direction. You can think of the DAG similar to a flowchart
+for a process. _Directed_ means the arrows show the flow from one step to the next, and _acyclic_ means you cannot
+follow the arrows backward to get back to the starting point.
+
+The workflow settings pane on the right includes the following tabs:
+
+- The settings on the **Details** tab allow you to change this workflow's name. You can also see when this workflow was created and which jobs were run for this workflow.
+- **Schedule** allows you to set up a schedule for this workflow to run automatically (on a regular time schedule).
+- **Settings** allows you to specify whether every time this workflow runs, that Unstructured's results will overwrite any previous results in the destination location.
+ To turn on this behavior, check the **Overwrite existing results** box. To turn it off, uncheck the box. Note that this setting works only
+ for blog storage destination connectors such as the ones for Amazon S3, Azure Blob Storage, and Google Cloud Storage.
+- **FAQ** contains additional information about how to use the workflow designer.
+
+If the workflow settings pane is not visible, click the **Settings** button near the bottom to show it.
+
+There are also buttons near the bottom to undo or redo recent edits to the workflow DAG, zoom in and out of the workflow
+designer, re-center the DAG within the designer, and add a new node to the DAG.
+
+## Step 3: Learn more about partitioning
+
+You already saw from the quickstart that Unstructured uses a process called
+[partitioning](/ui/partitioning) to identify and extract content from your source documents and semi-structured data and then
+output this content as a series of contextually-rich [document elements and metadata](/ui/document-elements), which are
+well-tuned for RAG, agentic AI, and model fine-tuning.
+
+Your existing workflow already has a **Partitioner** node that uses the **High Res** partitioning strategy. To see the other
+kinds of partitioning strategies that are available, click the **Partitioner** node, and then look in the node's settings pane
+that appears.
+
+
+
+
+ _When would I choose **Auto**, **Fast**, **High Res**, or **VLM**?_
+
+ - **Auto** is recommended in most cases. It lets Unstructured figure out the best strategy to switch over to for each incoming file (and even for each page if the incoming file is a PDF), so you don't have to!
+ - **Fast** is only for when you know for certain that none of your files have tables, images, or multilanguage, scanned, or handwritten content in them. It's optimized for partitioning text-only content and is the fastest of all the strategies. It can recognize the text for only a few languages other than English.
+ - **High Res** is only for when you know for certain that at least one of your files has images or simple tables in them, and that none of your files also have scanned or handwritten content in them. It can recognize the text for more languages than **Fast** but not as many as **VLM**.
+ - **VLM** is great for any file, but it is best when you know for certain that some of your files have a combination of tables (especially complex ones), images, and multilanguage, scanned, or handwritten content. It's the highest quality but slowest of all the strategies.
+
+
+In this step, you will test the **High Res** partitioning strategy on the "Chinese Characters" file that you downloaded earlier.
+
+1. In the workflow designer, at the bottom of the **Source** node, click **Drop file to test**.
+
+ 
+
+2. Browse to and select the "Chinese Characters" PDF file that you downloaded earlier.
+3. Immediately above the **Source** node, click **Test**.
+
+ 
+
+4. The PDF file appears in a pane on the left side of the screen, and Unstructured's output appears in a **Test output** pane on the right side of the screen.
+
+ 
+
+
+ _What am I looking at in the output here?_
+
+ - Unstructured outputs its results in industry-standard [JSON](https://www.json.org) format, which is ideal for RAG, agentic AI, and model fine-tuning.
+ - Each object in the JSON is called a [document element](/ui/document-elements) and contains a `text` representation of the content that Unstructured detected for the particular portion of the document that was analyzed.
+ - The `type` is the kind of document element that Unstructured categorizes it as, such as whether it is a title (`Title`), a table (`Table`), an image (`Image`), a series of well-formulated sentences
+ (`NarrativeText`), some kind of free text (`UncategorizedText`), a part of a list (`ListItem`), and so on. [Learn more](/ui/document-elements#element-type).
+ - The `element_id` is a unique identifier that Unstructured generates to refer to each document element. [Learn more](/ui/document-elements#element-id).
+ - `metadata` contains supporting details about each document element, such as the page number it occurred on, the file it occurred in, and so on. [Learn more](/ui/document-elements#metadata).
+
+
+
+ _What else can I do here?_
+
+ - You can scroll through the original file on the left or, where supported for a given file type, click the up and down arrows to page through the file one page at a time.
+ - You can scroll through Unstructured's JSON output on the right, and you can click **Search JSON** to search for specific text in the JSON output. You will do this next.
+ - **Download Full JSON** allows you to download the full output to your local machine as a JSON file.
+ - **View JSON at this step** allows you to view the JSON output at each step in the workflow as it was further processed. There's only one step right now (the **Partitioner** step),
+ but as you add more nodes to the workflow DAG, this can be a useful tool to see how the JSON output changes along the way.
+ - The close (**X**) button returns you to the workflow designer.
+
+
+5. In the **Test output** pane, make sure that **Table to HTML (4 of 4)** is showing. If not, click the right arrow (**>**) until **Table to HTML (4 of 4)** appears, which will show the output from the last node in the workflow.
+
+ 
+
+6. Some interesting portions of the output include the following, which you can get to be clicking **Search JSON** above the output:
+
+ 
+
+ - The Chinese characters on page 1. Search for the text `all have the meaning of acting`. Notice how the Chinese characters are captures correctly.
+ - The HTML representations of the seven tables on pages 6-9 and 12. Search for the text `"text_as_html":`.
+ - The descriptions of the four diagrams on page 3. Search for the text `\"diagram\",\n \"description\"`.
+ - The descriptions of the three graphs on pages 7-8. Search for the text `\"graph\",\n \"description\"`.
+ - The Base64-encoded, full-fidelity representations of the 14 tables, diagrams, and graphs on pages 3, 6-9, and 12.
+ Search for the text `"image_base64":`. You can use a web-based tool such as [base64.guru](https://base64.guru/converter/decode/image)
+ to experiment with decoding these representations back into their original visual representations.
+
+8. When you are done, be sure to click the close (**X**) button above the output on the right side of the screen, to return to
+ the workflow designer for the next step.
+
+## Step 4: Add more enrichments
+
+Your existing workflow already has three **Enrichment** nodes. Recall that these nodes perform the following enrichments:
+
+- An [image description](ui/enriching/image-descriptions) enrichment, which uses a vision language model (VLM) to provide a text-based summary of the contents of the each detected image.
+- A [text fidelity optimization](/ui/enriching/ocr) enrichment, which uses a VLM to improve the accuracy of each block of initially-processed text.
+- A [table to HTML](/ui/enriching/table-to-html) enrichment, which uses a VLM to provide an HTML-structured representation of each detected table.
+
+In this step, you add a few more [enrichments](/ui/enriching/overview) to your workflow, such as generating summary descriptions of detected tables,
+and generating detected entities (such as people and organizations) and the inferred relationships among these entities.
+
+1. In the workflow designer, just before the **Destination** node, click the add (+) icon, and then click **Enrich > Enrichment**.
+
+ 
+
+2. In the node's settings pane's **Details** tab, click:
+
+ - **Table** under **Input Type**.
+ - **Anthropic** under **Provider**.
+ - **Claude Sonnet 4** under **Model**.
+ - **Table Description** under **Task**.
+
+
+ The table description enrichment generates a summary description of each detected table. This can help you to more quickly and easily understand
+ what each table is all about without having to stop to manually read through the table's content yourself. This also provides additional helpful context about the table for your RAG apps, agents, and models. [Learn more](/ui/enriching/table-descriptions).
+
+
+3. Add a named entity recognition enrichment (click the add (**+**) icon to the right of the preceding node, and then click **Enrich > Enrichment).
+
+ In the node's settings pane's **Details** tab, click:
+
+ - **Text** under **Input Type**.
+ - **Anthropic** under **Provider**.
+ - **Claude Sonnet 4** under **Model**.
+
+
+ The named entity recognition (NER) enrichment generates a list of detected entities (such as people and organizations) and the inferred relationships among these entities. This provides additional context about these entities' types and their relationships for your graph databases, RAG apps, agents, and models. [Learn more](/ui/enriching/ner).
+
+
+ The workflow designer should now look like this:
+
+ 
+
+4. Immediately above the **Source** node, click **Test**.
+5. In the **Test output** pane, make sure that **Enrichment (6 of 6)** is showing. If not, click the right arrow (**>**) until **Enrichment (6 of 6)** appears, which will show the output from the last node in the workflow.
+6. Some interesting portions of the output include the following:
+
+ - The descriptions of the seven tables on pages 6-9 and 12. Search for the text `## Table Structure Analysis\n\n###`.
+ - The identified entities and inferred relationships among them. For example, search for the text `Zhijun Wang`. Of the eight instances of this name, notice
+ the author's identification as a `PERSON` three times, the author's `published` relationship twice, and the author's `affiliated_with` relationship twice.
+
+7. When you are done, be sure to click the close (**X**) button above the output on the right side of the screen, to return to
+ the workflow designer for the next step.
+
+## Step 5: Experiment with chunking
+
+In this step, you apply [chunking](/ui/chunking) to your workflow. Chunking is the process where Unstructured rearranges
+the resulting document elements' `text` content into manageable "chunks" to stay within the limits of an AI model and to improve retrieval precision.
+
+
+ _What kind of chunking strategy should I use, and how big should my chunks be?_
+
+ Unfortunately, there is no one-size-fits-all answer to this question. However, there are some general considerations and guidelines that can help you to determine
+ the best chunking strategy and chunk size for your specific use case. Be sure of course to also consult the documentation for your target AI model and downstream application toolsets.
+
+ Is your content primarily organized by title, by page, by interrelated subject matter, or none of these? This can help you determine whether a
+ by-title, by-page, by-similarity, or basic (by-character) chunking strategy is best. (You'll experiment with each of these strategies here later.)
+
+ If your chunks are too small, they might lose necessary context, leading to the model providing inaccurate, irrelevant, or hallucinated results.
+ On the other hand, if your chunks are too large, the model can struggle with the sheer volume of information, leading to information overload, diluted meaning, and potentially higher processing costs.
+ You should aim to find a balance between chunks that are big enough to contain meaningful information, while small enough to enable performant applications and low latency responses.
+
+ For example, smaller chunks of 128 or 256 tokens might be sufficient for capturing more granular semantic information, while larger chunks of 512 or 1024 tokens might be better for retaining more context.
+ It's important here to note that _tokens_ and _characters_ are not the same thing! In terms of
+ characters, for English text, a common approximation is 1 token being equal to about 3 or 4 characters or three-quarters of a word. Many AI model providers publish their own token-to-character calculators online that you can use for estimation purposes.
+
+ You should experiement with a variety of chunk sizes, taking into account the kinds of content, the length and complexity of user queries and agent tasks,
+ the intended end use, and of course the limits of the models you are using. Try different chunking strategies and sizes with your models and evaluate the results for yourself.
+
+
+1. In the workflow designer, just before the **Destination** node, click the add (**+**) icon, and then click **Enrich > Chunker**.
+
+ 
+
+2. In the node's settings pane's **Details** tab, select **Chunk by Character**.
+3. Under **Chunk by Character**, specify the following settings:
+
+ - Check the box labelled **Include Original Elements**.
+ - Set **Max Characters** to **500**.
+ - Set **New After N Characters** to **400**.
+ - Set **Overlap** to **50**.
+ - Leave **Contextual Chunking** turned off and **Overlap All** unchecked.
+
+ 
+
+
+ _What do each of these chunking settings do?_
+
+ - **Contextual Chunking** prepends chunk-specific explanatory context to each chunk, which has been shown to yield significant improvements in downstream retrieval accuracy. [Learn more](/ui/chunking#contextual-chunking).
+ - **Include Original Elements** outputs into each chunk's `metadata` field's `orig_elements` value the elements that were used to form that particular chunk. [Learn more](/ui/chunking#include-original-elements-setting).
+ - **Max Characters** is the "hard" or maximum number of characters that any one chunk can contain. Unstructured cannot exceed this number when forming chunks. [Learn more](/ui/chunking#max-characters-setting).
+ - **New After N Characters**: is the "soft" or approximate number of characters that any one chunk can contain. Unstructured can exceed this number if needed when forming chunks (but still cannot exceed the **Max Characters** setting). [Learn more](/ui/chunking#new-after-n-characters-setting).
+ - **Overlap**, when applied (see **Overlap All**), prepends to the current chunk the specified number of characters from the previous chunk, which can help provide additional context about this chunk relative to the previous chunk. [Learn more](/ui/chunking#overlap-setting)
+ - **Overlap All** applies the **Overlap** setting (if greater than zero) to all chunks. Otherwise, unchecking this box means that the **Overlap** setting (if greater than zero)is applied only in edge cases where "normal" chunks cannot be formed by combining whole elements. Check this box with caution as it can introduce noise into otherwise clean semantic units. [Learn more](/ui/chunking#overlap-all-setting).
+
+
+4. Immediately above the **Source** node, click **Test**.
+5. In the **Test output** pane, make sure that **Chunker (7 of 7)** is showing. If not, click the right arrow (**>**) until **Chunker (7 of 7)** appears, which will show the output from the last node in the workflow.
+6. To explore the chunker's results, search for the text `"type": "CompositeElement"`.
+
+
+ _In the chunked output, where did all of the document elements I saw before, such as `Title`, `Image`, and `Table`, go?_
+
+ During chunking, the document elements that were generated during partitioning are now chunked. Because some of these document elements can be split into multiple chunks
+ or combined with other chunks, these chunked document elements are now of type `CompositeElement` and `TableChunk`.
+
+ You can have Unstructured also output the original document elements that
+ these chunks were derived from by putting them into each chunk's `metadata`. To have Unstructured do this, use the **Include Original Elements** setting, as described in the preceding tip.
+
+
+7. Try running this workflow again with the **Chunk by Title** strategy, as follows:
+
+ a. Click the close (**X**) button above the output on the right side of the screen.
+ b. In the workflow designer, click the **Chunker** node and then, in the node's settings pane's **Details** tab, select **Chunk by Title**.
+ c. Under **Chunk by Title**, specify the following settings:
+
+ - Check the box labelled **Include Original Elements**.
+ - Set **Max Characters** to **500**.
+ - Set **New After N Characters** to **400**.
+ - Set **Overlap** to **50**.
+ - Leave **Contextual Chunking** turned off, leave **Combine Text Under N Characters** blank, and leave **Multipage Sections** and **Overlap All** unchecked.
+
+
+ _What do each of the chunking settings here that were not already described in the preceding tip do?_
+
+ - **Combine Text Under N Characters** combines elements from a section into a chunk until a section reaches a length of this many characters. [Learn more](/ui/chunking#combine-text-under-n-characters-setting).
+ - **Multipage Sections** when checked, allows sections to span multiple pages. [Learn more](/ui/chunking#multipage-sections-setting).
+
+
+ d. Immediately above the **Source** node, click **Test**.
+ e. In the **Test output** pane, make sure that **Chunker (7 of 7)** is showing. If not, click the right arrow (**>**) until **Chunker (7 of 7)** appears, which will show the output from the last node in the workflow.
+ f. To explore the chunker's results, search for the text `"type": "CompositeElement"`. Notice that the lengths of some of the chunks that immediately
+ precede titles might be shortened due to the presence of the title impacting the chunk's size.
+
+8. Try running this workflow again with the **Chunk by Page** strategy, as follows:
+
+ a. Click the close (**X**) button above the output on the right side of the screen.
+ b. In the workflow designer, click the **Chunker** node and then, in the node's settings pane's **Details** tab, select **Chunk by Page**.
+ c. Under **Chunk by Page**, specify the following settings:
+
+ - Check the box labelled **Include Original Elements**.
+ - Set **Max Characters** to **500**.
+ - Set **New After N Characters** to **400**.
+ - Set **Overlap** to **50**.
+ - Leave **Contextual Chunking** turned off, and leave **Overlap All** unchecked.
+
+ d. Immediately above the **Source** node, click **Test**.
+ e. In the **Test output** pane, make sure that **Chunker (7 of 7)** is showing. If not, click the right arrow (**>**) until **Chunker (7 of 7)** appears, which will show the output from the last node in the workflow.
+ f. To explore the chunker's results, search for the text `"type": "CompositeElement"`. Notice that the lengths of some of the chunks that immediately
+ precede page breaks might be shortened due to the presence of the page break impacting the chunk's size.
+
+9. Try running this workflow again with the **Chunk by Similarity** strategy, as follows:
+
+ a. Click the close (**X**) button above the output on the right side of the screen.
+ b. In the workflow designer, click the **Chunker** node and then, in the node's settings pane's **Details** tab, select **Chunk by Similarity**.
+ c. Under **Chunk by Similarity**, specify the following settings:
+
+ - Check the box labelled **Include Original Elements**.
+ - Set **Max Characters** to **500**.
+ - Set **Similarity Threshold** to **0.99**.
+ - Leave **Contextual Chunking** turned off.
+
+
+ _What does **Similarity Threshold** mean?_
+
+ - The **Similarity Threshold** is a number between 0 and 1 exclusive (**0.01** to **0.99** inclusive).
+ - **0.01** means that any two segments of text that are being compared to each other and are considered least identical in semantic meaning to each other are more likely to be combined into the same chunk together, when such combining must occur.
+ - **0.99** means that any two segments of text that are being compared to each other and are considered almost identical in semantic meaning to each other are more likely to be combined into the same chunk together, when such combining must occur.
+ - Numbers toward **0.01** bias toward least-identical semantic matches, while numbers toward **0.99** bias toward near-identical semantic matches.
+
+
+ d. Immediately above the **Source** node, click **Test**.
+ e. In the **Test output** pane, make sure that **Chunker (7 of 7)** is showing. If not, click the right arrow (**>**) until **Chunker (7 of 7)** appears, which will show the output from the last node in the workflow.
+ f. To explore the chunker's results, search for the text `"type": "CompositeElement"`. Notice that the lengths of many of the chunks fall well short of the **Max Characters** limit. This is because a similarity threshold
+ of **0.99** means that only sentences or text segments with a near-perfect semantic match will be grouped together into the same chunk. This is an extremely high threshold, resulting in very short, highly specific chunks of text.
+ g. If you change **Similarity Threshold** to **0.01** and run the workflow again, searching for the text `"type": "CompositeElement"`, many of the chunks will now come closer to the **Max Characters** limit. This is because a similarity threshold
+ of **0.01** provides an extreme tolerance of differences between pieces of text, grouping almost anything together.
+
+10. When you are done, be sure to click the close (**X**) button above the output on the right side of the screen, to return to
+ the workflow designer for the next step.
+
+## Step 6: Experiment with embedding
+
+In this step, you generate [embeddings](/ui/embedding) for your workflow. Embeddings are vectors of numbers that represent various aspects of the text that is extracted by Unstructured.
+These vectors are stored or "embedded" next to the text itself in a vector store or vector database. Chatbots, agents, and other AI solutions can use
+these vector embeddings to more efficiently and effectively find, analyze, and use the associated text. These vector embeddings are generated by an
+embedding model that is provided by an embedding provider. For the best embedding model to apply to your use case, see the documentation for your target downstream application toolsets.
+
+1. With the workflow designer active from the previous step, just before the **Destination** node, click the add (**+**) icon, and then click **Transform > Embedder**.
+
+ 
+
+2. In the node's settings pane's **Details** tab, under **Select Embedding Model**, for **Azure OpenAI**, select **Text Embedding 3 Small [dim 1536]**.
+3. Immediately above the **Source** node, click **Test**.
+4. In the **Test output** pane, make sure that **Embedder (8 of 8)** is showing. If not, click the right arrow (**>**) until **Embedder (8 of 8)** appears, which will show the output from the last node in the workflow.
+5. To explore the embeddings, search for the text `"embeddings"`.
+
+
+ _What do all of these numbers mean?_
+
+ All by themselves, the numbers in the `embeddings` field of the output have no human-interpretable meaning on their own.
+ However, when combined with the specific text that these numbers are associated with, and the embedding model's
+ logic that was used to generate these numbers, the numbers in the `embeddings` field are extremely powerful when leveraged by
+ downstream chatbots, agents, and other AI solutions.
+
+ These numbers typically represent complex, abstract attributes about the text that are known only to the embedding model that generated these numbers. These
+ attributes can be about the text's overall sentiment, intent, subject, semantic meaning, grammatical function, relationships between words, or any number of other things that the model is good at figuring out. This
+ is why the embedding model you choose here must be the exact same embedding model that you use in any related chatbot, agent, or other
+ AI solution that relies on these numbers. Otherwise, the numbers that are generated here will not have the same meaning
+ downstream as well. Also, the number of _dimensions_ (or the number of numbers in the `embeddings` field)
+ you choose here must also be the exact same number of dimensions downstream as well.
+
+ To repeat, the name and number of dimensions
+ for the embedding model you choose here must be the exact same name and number of dimensions for the embedding model you use in your
+ related downstream chatbots, agents, and other AI solutions that rely on this particular text and its associated embeddings that were generated here.
+
+
+6. When you are done, be sure to click the close (**X**) button above the output on the right side of the screen, to return to
+ the workflow designer so that you can continue designing things later as you see fit.
+
+## Next steps
+
+Congratulations! You now have an Unstructured workflow that partitions, enriches, chunks, and embeds your source documents, producing
+context-rich data that is ready for retrieval-augmented generation (RAG), agentic AI, and model fine-tuning.
+
+Right now, your workflow only accepts one local file at a time for input. Your workflow also only sends Unstructured's processed data to your screen or to be saved locally as a JSON file.
+You can modify your workflow to accept multiple files and data from—and send Unstructured's processed data to—one or more file storage
+locations, databases, and vector stores. To learn how to do this, try one or more of the following quickstarts:
+
+- [Remote quickstart](/ui/quickstart#remote-quickstart) - This quickstart show you how to begin processing files and semi-structured data from remote source locations at scale, instead of just one local file at a time.
+- [Dropbox source connector quickstart](/ui/sources/dropbox-source-quickstart) - If you don't have any remote source locations available for Unstructured to connect to, this quickstart shows you how to set up a Dropbox account to store your documents in, and then connect Unstructured to your Dropbox account.
+- [Pinecone destination connector quickstart](/ui/destinations/pinecone-destination-quickstart) - If you don't have any remote destination locations available for Unstructured to send its processed data to, this quickstart shows you how to set up a Pinecone account to have Unstructured store its processed data in, and then connect Unstructured to your Pinecone account.
+
+Unstructured also offers an API and SDKs, which allow you to use code to work with Unstructured programmatically instead of only with the UI. For details, see:
+
+- [Unstructured API quickstart](/api-reference/workflow/overview#quickstart) - This quickstart uses the Unstructured Workflow Endpoint to programmatically create a Dropbox source connector and a Pinecone destination connector in your Unstructured account. You then programmatically add these connectors to a workflow in your Unstructured account, run that workflow as a job, and then explore the job's results.
+- [Unstructured Python SDK](/api-reference/workflow/overview#unstructured-python-sdk) - This article provides an overview of the Unstructured Python SDK and how to use it.
+- [Unstructured API overview](/api-reference/overview) - This article provides an overview of the Unstructured API and how to use it.
+
+If you are not able to complete any of the preceding quickstarts, contact Unstructured Support at [support@unstructured.io](mailto:support@unstructured.io).
\ No newline at end of file
diff --git a/snippets/general-shared-text/get-started-single-file-ui.mdx b/snippets/general-shared-text/get-started-single-file-ui.mdx
new file mode 100644
index 00000000..23c1e6d6
--- /dev/null
+++ b/snippets/general-shared-text/get-started-single-file-ui.mdx
@@ -0,0 +1,97 @@
+This quickstart shows how, in just a few minutes, you can use the Unstructured user interface (UI) to quickly and easily see Unstructured's
+best-in-class transformation results for a single file that is stored on your local computer.
+
+
+ This quickstart focuses on a single, local file for ease-of-use demonstration purposes.
+
+ To use Unstructured later to do
+ large-scale batch processing of multiple files and semi-structured data that are stored in remote locations,
+ [skip over](/ui/quickstart#remote-quickstart) to the remote quickstart after you finish this one.
+
+
+If you do not already have an Unstructured account, [sign up for free](https://unstructured.io/?modal=try-for-free).
+After you sign up, you are automatically signed in to your new Unstructured **Starter** account, at [https://platform.unstructured.io](https://platform.unstructured.io).
+
+Do the following:
+
+1. After you are signed in, the **Start** page appears.
+2. In the **Welcome** area, do one of the following:
+
+ - Click one of the sample files, such as **realestate.pdf**, to have Unstructured parse and transform that sample file.
+ - Click **Browse files**, and then browse to and select one of your own files, to have Unstructured parse and transform it.
+
+
+ If you choose to use your own file, the file must be 10 MB or less in size.
+
+
+ 
+
+3. After Unstructured has finished parsing and transforming the file (a process known as
+ [partitioning](/ui/partitioning)), you will see the file's contents in the
+ **Preview** pane in the center and Unstructured's results in the **Result** pane on the right.
+
+ 
+
+4. The **Result** pane shows a formatted view of Unstructured's results by default. This formatted view is designed for human
+ readability. To see the underlying JSON view of the results, which is designed for RAG and agentic AI,
+ click **JSON** at the top of the **Result** pane.
+ [Learn about what's in the JSON view](/ui/document-elements).
+
+ 
+
+5. Unstructured's initial results are based on its **High Res** [partitioning strategy](/ui/partitioning), which
+ begins processing the file's contents and converting these contents into a series of Unstructured
+ [document elements and metadata](/ui/document-elements). This partitioning strategy provides good results overall, depending on the complexity of the file's contents.
+ This partioning strategy also generates a bounding box for each detected object in the file. A _bounding box_ is
+ an imaginary rectangular box drawn around the object to show its location and extent within the file.
+
+ After the High Res partitioning results are shown, Unstructured begins improving these initial results by
+ using vision language models (VLMs) to apply a series of generative refinements known as _enrichments_. These
+ enrichments include:
+
+ - An [image description](ui/enriching/image-descriptions) enrichment, which uses a VLM to provide a text-based summary of the contents of the each detected image.
+ - A [text fidelity optimization](/ui/enriching/ocr) enrichment, which uses a VLM to improve the accuracy of each block of initially-processed text.
+ - A [table to HTML](/ui/enriching/table-to-html) enrichment, which uses a VLM to provide an HTML-structured representation of each detected table.
+
+ While these enrichments are being applied, a banner appears at the top of the **Result** pane.
+
+ 
+
+ To see these enrichments applied to the initial results, click **Update results** in the banner as soon as this button appears,
+ which might take up to a minute or more.
+
+ 
+
+6. To synchronize the scrolling of the **Preview** pane's selected contents with the **Result** pane's **Formatted** results,
+ rest your mouse pointer anywhere inside the contents of the **Preview** pane until a bounding box appears.
+ Then click the bounding box. Unstructured automatically scrolls the **Result** pane's **Formatted**
+ results to match the selected bounding box. (You cannot synchronize the scrolling of the **JSON** results.)
+
+ 
+
+ To show all of the bounding boxes in the **Preview** pane at once, turn on the **Show all bounding boxes** toggle at the top of the **Preview** pane.
+ You can now click any of the bounding boxes without first needing to rest your mouse pointer on them to show them.
+
+ 
+
+You can also do the following:
+
+- To download the JSON view of the results as a local JSON file, click the download icon to the left of the **Formatted** and **JSON** buttons in the **Result** pane.
+ (You cannot download the formatted view of the results.)
+
+ 
+
+- To have Unstructured partition a different file, click **Add new file** in the **Files** pane on the left, and then browse to and select the target file.
+- To view the results for a file that was previously partitioned during this session, click the file's name in the **Recent files** list in the **Files** pane.
+- To return to the **Start** page, click the **X** (close) button at the left on the title bar, next to **Transform**.
+- To have Unstructured do more—such as
+ [chunking](/ui/chunking), [embedding](/ui/embedding),
+ applying additional kinds of [enrichments](/ui/enriching/overview), and
+ processing larger files and semi-structured data in batches at scale—click
+ **Edit in Workflow Editor** at the right on the title bar, and then [skip over to the walkthrough](/ui/walkthrough-2).
+
+ 
+
+ [Learn how to add chunking, embeddings, and additional enrichments to your results](/ui/walkthrough-2).
+
+ [Learn more about the Unstructured user interface](/ui/overview).
\ No newline at end of file
diff --git a/ui/enriching/ocr.mdx b/ui/enriching/ocr.mdx
new file mode 100644
index 00000000..24b6c5fe
--- /dev/null
+++ b/ui/enriching/ocr.mdx
@@ -0,0 +1,84 @@
+---
+title: Text fidelity optimization
+---
+
+After partitioning, you can have a vision language model (VLM) optimize the fidelity of text blocks that Unstructured
+initially processed during its partitioning phase.
+
+Here are a few examples of Unstructured's output of text blocks that were initially processed, and the more accurate
+version of these text blocks that were optimized by using Claude Sonnet 4. Irrelevant lines of output have been omitted here for brevity.
+
+Before (vertical watermarked text, represented incorrectly):
+
+```json
+{
+ "...", "...",
+ "text": "3 2 0 2 t c O 9 2 ] V C . s c [ 2 v 9 0 8 6 1 . 0 1 3 2 : v i X r",
+ "...", "..."
+}
+```
+
+After (vertical watermarked text, now represented correctly from the original content):
+
+```json
+{
+ "...", "...",
+ "text": "arXiv:2310.16809v2 [cs.CV] 29 Oct 2023",
+ "...", "..."
+}
+```
+
+Before (hyperlink, represented incorrectly):
+
+```json
+{
+ "...", "...",
+ "text": "con/Yuliang-Liu/MultinodalOCR|",
+ "...", "..."
+}
+```
+
+After (hyperlink, now represented correctly from the original content):
+
+```json
+{
+ "...", "...",
+ "text": "https://github.com/Yuliang-Liu/MultimodalOCR",
+ "...", "..."
+}
+```
+
+Before (Chinese characters, represented incorrectly):
+
+```json
+{
+ "...", "...",
+ "text": "GT SHE GPT4-V: EHES",
+ "...", "..."
+}
+```
+
+After (Chinese characters, now represented correctly from the original content, expressed as Unicode):
+
+```json
+{
+ "...", "...",
+ "text": "GT : \u91d1\u724c\u70e7\u814a GPT4-V: \u6587\u9759\u5019\u9e1f",
+ "...", "..."
+}
+```
+
+## Optimize text fidelity
+
+import EnrichmentOCRHiResOnly from '/snippets/general-shared-text/enrichment-ocr-high-res-only.mdx';
+
+To optimize text fidelity, in an **Enrichment** node in a workflow, select **OCR**, and then choose one of the available provider (and model) combinations that are shown.
+
+
+ You can change a workflow's image description settings only through [Custom](/ui/workflows#create-a-custom-workflow) workflow settings.
+
+ For workflows that use [chunking](/ui/chunking), the **Chunker** node should be placed after all **Enrichment** nodes. Placing the
+ **Chunker** node before an image descriptions **Enrichment** node could cause incomplete or no image descriptions to be generated.
+
+
+
diff --git a/ui/enriching/overview.mdx b/ui/enriching/overview.mdx
index 1ae5bca6..07a83f68 100644
--- a/ui/enriching/overview.mdx
+++ b/ui/enriching/overview.mdx
@@ -2,7 +2,7 @@
title: Overview
---
-import EnrichmentImagesTablesHiResOnly from '/snippets/general-shared-text/enrichment-images-tables-hi-res-only.mdx';
+import EnrichmentImagesTablesOCRHiResOnly from '/snippets/general-shared-text/enrichment-images-tables-ocr-hi-res-only.mdx';
_Enriching_ adds enhancments to the processed data that Unstructured produces. These enrichments include:
@@ -10,6 +10,7 @@ _Enriching_ adds enhancments to the processed data that Unstructured produces. T
- Providing a summarized description of the contents of a detected table. [Learn more](/ui/enriching/table-descriptions).
- Providing a representation of a detected table in HTML markup format. [Learn more](/ui/enriching/table-to-html).
- Providing a list of recognized entities and their types, through a process known as _named entity recognition_ (NER). [Learn more](/ui/enriching/ner).
+- Having a vision language model (VLM) use advanced optical character recognition (OCR) to improve the accuracy of initially-processed text blocks. [Learn more](/ui/enriching/ocr).
To add an enrichment, in an **Enrichment** node in a workflow, select one of the following enrichment types:
@@ -17,12 +18,13 @@ To add an enrichment, in an **Enrichment** node in a workflow, select one of the
You can change enrichment settings only through [Custom](/ui/workflows#create-a-custom-workflow) workflow settings.
-
+
- **Image** to provide a summarized description of the contents of each detected image. [Learn more](/ui/enriching/image-descriptions).
- **Table** to provide a summarized description of the contents of each detected table. [Learn more](/ui/enriching/table-descriptions).
- **Table** can also provide a representation of each detected table in HTML markup format. [Learn more](/ui/enriching/table-to-html).
- **Text** to provide a list of recognized entities and their types by using a technique called _named entity recognition_ (NER). [Learn more](/ui/enriching/ner).
+- **OCR** to have a VLM use advanced OCR to improve the accuracy of initially-processed text blocks. [Learn more](/ui/enriching/ocr).
The **Text** enrichment type also supports custom prompts. In the **Details** tab, first select the input type **Text** and choose a provider (and model) combination. Then, under **Prompt**, click **Edit**.
Then, you can test your custom prompt in the **Edit & Test Prompt** section by clicking **Run Prompt**.
diff --git a/ui/quickstart.mdx b/ui/quickstart.mdx
index a27d07d9..cc30d31e 100644
--- a/ui/quickstart.mdx
+++ b/ui/quickstart.mdx
@@ -5,33 +5,9 @@ sidebarTitle: Quickstarts
## Local file quickstart
-The following quickstart shows you how to use the Unstructured UI to process a single file that is stored on your local machine.
-This approach is ideal for rapid testing and prototyping of Unstructured ETL+ workflows, across the full range of Unstructured features,
-against a single representative file.
+import GetStartedSingleFileUI from '/snippets/general-shared-text/get-started-single-file-ui.mdx';
-To process files (or data) in remote locations instead, skip ahead to the [remote quickstart](#remote-quickstart).
-
-import GetStartedSimpleUIOnly from '/snippets/general-shared-text/get-started-simple-ui-only.mdx';
-
-
-
-3. After you sign in, watch the following 2-minute video:
-
-
-
-4. To keep enhancing your workflow, skip ahead to the [walkthrough](/ui/walkthrough).
-
-5. To move beyond local file processing, you can try the following [remote quickstart](#remote-quickstart), or skip over to the [Dropbox source connector quickstart](/ui/sources/dropbox-source-quickstart) instead.
-
- You can also learn about Unstructured [source connectors](/ui/sources/overview), [destination connectors](/ui/destinations/overview), [workflows](/ui/workflows), [jobs](/ui/jobs), and [managing your account](/ui/account/overview).
+
---
diff --git a/ui/summarizing.mdx b/ui/summarizing.mdx
index e9bd96fe..4cc9bde6 100644
--- a/ui/summarizing.mdx
+++ b/ui/summarizing.mdx
@@ -74,13 +74,13 @@ Line breaks have been inserted here for readability. The output will not contain
## Summarize images or tables
-import EnrichmentImagesTablesHiResOnly from '/snippets/general-shared-text/enrichment-images-tables-hi-res-only.mdx';
+import EnrichmentImagesTablesOCRHiResOnly from '/snippets/general-shared-text/enrichment-images-tables-ocr-hi-res-only.mdx';
To summarize images or tables, in the **Task** drop-down list of an **Enrichment** node in a workflow, specify the following:
You can change a workflow's summarization settings only through [Custom](/ui/workflows#create-a-custom-workflow) workflow settings.
-
+
For image summarization, select **Image Description**, and then choose one of the available provider (and model) combinations that are shown.
diff --git a/ui/walkthrough-2.mdx b/ui/walkthrough-2.mdx
new file mode 100644
index 00000000..6510bada
--- /dev/null
+++ b/ui/walkthrough-2.mdx
@@ -0,0 +1,7 @@
+---
+title: Unstructured UI walkthrough
+---
+
+import GetStartedSingleFileUIPart2 from '/snippets/general-shared-text/get-started-single-file-ui-part-2.mdx';
+
+
\ No newline at end of file
diff --git a/ui/walkthrough.mdx b/ui/walkthrough.mdx
index 65115086..552bdbf5 100644
--- a/ui/walkthrough.mdx
+++ b/ui/walkthrough.mdx
@@ -22,6 +22,14 @@ These files, which are available for you to download to your local machine, incl
This PDF file features English handwriting and scanned images of documents.
Throughout this walkthrough, this file's title is shortened to "Nash letters" for brevity.
+
+ This walkthrough focuses on local files for ease-of-use demonstration purposes.
+
+ This walkthrough does not cover how to use
+ Unstructured to set up [connectors](/ui/connectors) to do large-scale batch processing of multiple files and semi-structured data that are stored in remote locations.
+ To learn how to set up connectors and do large-scale batch processing later, see the [next steps](#next-steps) after you finish this walkthrough.
+
+
If you are not able to complete any of the following steps, contact Unstructured Support at [support@unstructured.io](mailto:support@unstructured.io).
@@ -76,7 +84,7 @@ Let's get going!
_What do the other buttons on the sidebar do?_
- - **Start** takes you to the UI home page.
+ - **Start** takes you to the UI home page. The home page features a simple way to process one local file at a time with limited default settings. [Learn how](/welcome#unstructured-ui-quickstart).
- **Connectors** allows you to create and manage your [source](/ui/sources/overview) and
[destination](/ui/destinations/overview) connectors.
- **Jobs** allows you to see the results of your workflows that are run manually (on-demand) and automatically (on a regular time schedule). [Learn more](/ui/jobs).
@@ -95,7 +103,7 @@ Let's get going!
_What does **Build it For Me** do?_
- The **Build it For Me** option creates an [automatic workflow](/ui/workflows#create-an-automatic-workflow) with sensible default settings to enable you to get good-quality results faster. However,
+ The **Build it For Me** option creates an [automatic workflow](/ui/workflows#create-an-automatic-workflow) with limited, sensible default settings to enable you to get good-quality results faster. However,
this option requires that you first have an existing remote source and destination connector to add to the workflow. To speed things up here and keep things simple,
this walkthrough only processes files from your local machine and skips the use of connectors. To learn how to use connectors later,
see the [next steps](#next-steps) at the end of this walkthrough.
@@ -267,41 +275,77 @@ HTML representations of detected tables, and detected entities (such as people a

-3. In the node's settings pane's **Details** tab, select **Image** under **Input Type**, and then click **OpenAI (GPT-4o)** under **Model**.
+3. In the node's settings pane's **Details** tab, click:
+
+ - **Image** under **Input Type**
+ - **OpenAI** under **Provider**
+ - **(GPT-4o)** under **Model**
The image description enrichment generates a summary description of each detected image. This can help you to more quickly and easily understand
what each image is all about without having to stop to manually visualize and interpret the image's content yourself. This also provides additional helpful context about the image for your RAG apps, agents, and models. [Learn more](/ui/enriching/image-descriptions).
-4. Repeat this process to add three more nodes between the **Partitioner** and **Destination** nodes. To do this, click
+4. Repeat this process to add four more nodes between the **Partitioner** and **Destination** nodes. To do this, click
the add (**+**) icon, and then click **Enrich > Enrichment**, as follows:
- a. Add a **Table** (under **Input Type**) enrichment node with **OpenAI (GPT-4o)** (under **Model**) and **Table Description** (under **Task**) selected.
-
+ a. Add a table description enrichment (click the add (**+**) icon to the right of the preceding node, and then click **Enrich > Enrichment).
+
+ In the node's settings pane's **Details** tab, click:
+
+ - **Table** under **Input Type**.
+ - **Anthropic** under **Provider**.
+ - **Claude Sonnet 4** under **Model**.
+ - **Table Description** under **Task**.
+
The table description enrichment generates a summary description of each detected table. This can help you to more quickly and easily understand
what each table is all about without having to stop to manually read through the table's content yourself. This also provides additional helpful context about the table for your RAG apps, agents, and models. [Learn more](/ui/enriching/table-descriptions).
- b. Add another **Table** (under **Input Type**) enrichment node with **OpenAI (GPT-4o)** (under **Model**) and **Table to HTML** (under **Task**) selected.
+ b. Add a table to HTML enrichment (click the add (**+**) icon to the right of the preceding node, and then click **Enrich > Enrichment).
+
+ In the node's settings pane's **Details** tab, click:
+
+ - **Table** under **Input Type**.
+ - **Anthropic** under **Provider**.
+ - **Claude Sonnet 4** under **Model**.
+ - **Table to HTML** under **Task**.
The table to HTML enrichment generates an HTML representation of each detected table. This can help you to more quickly and accurately recreate the table's content elsewhere later as needed. This also provides additional context about the table's structure for your RAG apps, agents, and models. [Learn more](/ui/enriching/table-to-html).
- c. Add a **Text** (under **Input Type**) enrichment node with **OpenAI (GPT-4o)** (under **Model**) selected.
+ c. Add a named entity recognition enrichment (click the add (**+**) icon to the right of the preceding node, and then click **Enrich > Enrichment).
+
+ In the node's settings pane's **Details** tab, click:
+
+ - **Text** under **Input Type**.
+ - **Anthropic** under **Provider**.
+ - **Claude Sonnet 4** under **Model**.
The named entity recognition (NER) enrichment generates a list of detected entities (such as people and organizations) and the inferred relationships among these entities. This provides additional context about these entities' types and their relationships for your graph databases, RAG apps, agents, and models. [Learn more](/ui/enriching/ner).
+
+ d. Add a text fidelity optimization enrichment (click the add (**+**) icon to the right of the preceding node, and then click **Enrich > Enrichment).
+
+ In the node's settings pane's **Details** tab, click:
+
+ - **OCR** under **Input Type**.
+ - **Anthropic** under **Provider**.
+ - **Claude Sonnet 4** under **Model**.
+
+
+ The text fidelity optimization enrichment improves the accuracy of text blocks that Unstructured initially processed during its partitioning phase. [Learn more](/ui/enriching/ocr).
+
The workflow designer should now look like this:

5. Change the **Source** node to use the "Chinese Characters" PDF file, and then click **Test**.
-6. In the **Test output** pane, make sure that **Enrichment (5 of 5)** is showing. If not, click the right arrow (**>**) until **Enrichment (5 of 5)** appears, which will show the output from the last node in the workflow.
+6. In the **Test output** pane, make sure that **Enrichment (6 of 6)** is showing. If not, click the right arrow (**>**) until **Enrichment (6 of 6)** appears, which will show the output from the last node in the workflow.

@@ -497,18 +541,18 @@ embedding model that is provided by an embedding provider. For the best embeddin
Congratulations! You now have an Unstructured workflow that partitions, enriches, chunks, and embeds your source documents, producing
context-rich data that is ready for retrieval-augmented generation (RAG), agentic AI, and model fine-tuning.
-Right now, your workflow only accepts one local file at a time for input. Your workflow also only sends Unstructured's processed data to your screen or to be save locally as a JSON file.
+Right now, your workflow only accepts one local file at a time for input. Your workflow also only sends Unstructured's processed data to your screen or to be saved locally as a JSON file.
You can modify your workflow to accept multiple files and data from—and send Unstructured's processed data to—one or more file storage
locations, databases, and vector stores. To learn how to do this, try one or more of the following quickstarts:
-- [Remote quickstart](/ui/quickstart#remote-quickstart)
-- [Dropbox source connector quickstart](/ui/sources/dropbox-source-quickstart)
-- [Pinecone destination connector quickstart](/ui/destinations/pinecone-destination-quickstart)
+- [Remote quickstart](/ui/quickstart#remote-quickstart) - This quickstart show you how to begin processing files and semi-structured data from remote source locations at scale, instead of just one local file at a time.
+- [Dropbox source connector quickstart](/ui/sources/dropbox-source-quickstart) - If you don't have any remote source locations available for Unstructured to connect to, this quickstart shows you how to set up a Dropbox account to store your documents in, and then connect Unstructured to your Dropbox account.
+- [Pinecone destination connector quickstart](/ui/destinations/pinecone-destination-quickstart) - If you don't have any remote destination locations available for Unstructured to send its processed data to, this quickstart shows you how to set up a Pinecone account to have Unstructured store its processed data in, and then connect Unstructured to your Pinecone account.
Unstructured also offers an API and SDKs, which allow you to use code to work with Unstructured programmatically instead of only with the UI. For details, see:
-- [Unstructured API quickstart](/api-reference/workflow/overview#quickstart)
-- [Unstructured Python SDK](/api-reference/workflow/overview#unstructured-python-sdk)
-- [Unstructured API overview](/api-reference/overview)
+- [Unstructured API quickstart](/api-reference/workflow/overview#quickstart) - This quickstart uses the Unstructured Workflow Endpoint to programmatically create a Dropbox source connector and a Pinecone destination connector in your Unstructured account. You then programmatically add these connectors to a workflow in your Unstructured account, run that workflow as a job, and then explore the job's results.
+- [Unstructured Python SDK](/api-reference/workflow/overview#unstructured-python-sdk) - This article provides an overview of the Unstructured Python SDK and how to use it.
+- [Unstructured API overview](/api-reference/overview) - This article provides an overview of the Unstructured API and how to use it.
If you are not able to complete any of the preceding quickstarts, contact Unstructured Support at [support@unstructured.io](mailto:support@unstructured.io).
\ No newline at end of file
diff --git a/ui/workflows.mdx b/ui/workflows.mdx
index e89d56e4..54b138ac 100644
--- a/ui/workflows.mdx
+++ b/ui/workflows.mdx
@@ -21,7 +21,7 @@ Unstructured provides two types of workflow builders:
### Create an automatic workflow
-import EnrichmentImagesTablesHiResOnly from '/snippets/general-shared-text/enrichment-images-tables-hi-res-only.mdx';
+import EnrichmentImagesTablesOCRHiResOnly from '/snippets/general-shared-text/enrichment-images-tables-ocr-hi-res-only.mdx';
You must first have an existing source connector and destination connector to add to the workflow.
@@ -102,7 +102,7 @@ After this workflow is created, you can change any or all of its settings if you
source connector, destination connector, partitioning, chunking, and embedding settings. You can also add enrichments
to the workflow if you want to.
-
+
To change the workflow's default settings or to add enrichments:
@@ -214,7 +214,7 @@ If you did not previously set the workflow to run on a schedule, you can [run th
- Click **Connect** to add another **Source** or **Destination** node. You can add multiple source and destination locations. Files will be ingested from all of the source locations, and the processed data will be delivered to all of the destination locations. [Learn more](#custom-workflow-node-types).
- Click **Enrich** to add a **Chunker** or **Enrichment** node. [Learn more](#custom-workflow-node-types).
-
+
- Click **Transform** to add a **Partitioner** or **Embedder** node. [Learn more](#custom-workflow-node-types).
@@ -304,7 +304,7 @@ import DeprecatedModelsUI from '/snippets/general-shared-text/deprecated-models-
-
+
- **Image** to summarize images. Also select one of the available provider (and model) combinations that are shown.
@@ -330,6 +330,11 @@ import DeprecatedModelsUI from '/snippets/general-shared-text/deprecated-models-
**Edit & Test Prompt** section to test the prompt.
[Learn more](/ui/enriching/ner).
+
+ - **OCR** to optimize the fidelity of text blocks that Unstructured initially processed during its partitioning phase.
+ Also select one of the available provider (and model) combinations that are shown.
+
+ [Learn more](/ui/enriching/ocr).
diff --git a/welcome.mdx b/welcome.mdx
index 29c67a4f..4847ab94 100644
--- a/welcome.mdx
+++ b/welcome.mdx
@@ -51,28 +51,27 @@ You can use Unstructured through a user interface (UI), an API, or both. Read on
## Unstructured UI quickstart
-1. If you do not already have an Unstructured account, [sign up for free](https://unstructured.io/?modal=try-for-free).
- After you sign up, you are automatically signed in to your new Unstructured **Starter** account, at [https://platform.unstructured.io](https://platform.unstructured.io).
-2. Watch the following 2-minute video:
+import GetStartedSingleFileUI from '/snippets/general-shared-text/get-started-single-file-ui.mdx';
-
-
- [Keep enhancing your workflow](/ui/walkthrough).
-
- [Learn more](/ui/overview).
+
---
## Unstructured API quickstart
+This quickstart shows how you can use the Unstructured API to quickly and easily see Unstructured's
+transformation results for a single file that is stored locally.
+
+
+ This quickstart uses the Unstructured API's [Partition Endpoint](/api-reference/partition/overview) and focuses on a single, local file for ease-of-use demonstration purposes. This quickstart also
+ focuses only on a limited set of Unstructured's full capabilities.
+
+ To unlock Unstructured's full feature set, as well as use Unstructured to do
+ large-scale batch processing of multiple files and semi-structured data that are stored in remote locations,
+ [skip over](/api-reference/workflow/overview#quickstart) to an expanded, advanced version of this quickstart that uses the
+ Unstructured API's [Workflow Endpoint](/api-reference/workflow/overview) instead.
+
+
1. If you do not already have an Unstructured account, [sign up for free](https://unstructured.io/?modal=try-for-free).
After you sign up, you are automatically signed in to your Unstructured **Starter** account, at [https://platform.unstructured.io](https://platform.unstructured.io).
2. Watch the following 3-minute video: