The information contained in a raw PDF is messy. Even for a text-only PDF, the file does not encode semantic boundaries like paragraphs and sections, or even sentences. Instead, they are encoded as small text blocks with coordinates. Tables and charts are stored as lines and curves (i.e. vector graphics), and the content is not organized in tabular format.PDF files also often come from scanners, in which case they are effectively images and the data is not structured at all. The goal of document ingestion is to convert such data into formats that are easily consumable by downstream systems like LLMs / VLMs, RAG pipeline, or traditional databases.Document ingestion is sometimes casually referred to as OCR, which technically means recognizing texts in images. OCR is a part of document ingestion, but document ingestion also means turning the document into structured data like JSON or HTML.
Documents come in very diverse formats, varied across industries and use cases. While VLLMs are improving quickly, they are still not good enough to turn any kind of document from image to structured data in one shot. For tables and charts, accuracy is paramount, and missing one digit or a cell entry shifted by one column can critically change the content. These are very common problems in VLMs that claim to have solved OCR (try it yourself!)A much better solution is to break the problem into multiple stages that can be handled by specialized modules, some leveraging VLMs. It leads to higher accuracy, better handling of edge cases, and often cheaper and faster pipelines.
The first stage of document processing is layout analysis. The goal of layout analysis is to identify bounding boxes within a page of a document for different semantic sections. For example, a page with table, a chart and paragraphs and a footer, need to be recognized as different elements. Layout analysis outputs a series of bounding box coordinates containing these elements.Note that the requirements for layout analysis can be different depending on the downstream purposes. For example, a formula within a paragraph can be either detected to be part of a paragraph, or as a separate element.
A step that is subtle but needed is read order detection. For a two-column page for example, a simple vertical and horizontal sweep will not cut it. The detected elements need to be re-ordered if knowing their relations in the context of the page is important. Depending on the use case, this step can be skipped.
In many use cases, once the different elements are detected, they need to be converted from images to text. For example, the image of a table is not useful unless it can be converted to tabular format. The goal of this stage is to turn the elements identified in the previous stages into text.For the image of a text paragraph in a scanned document, an OCR model can be used. There are good specialized models for handwriting recognition. For flowcharts, a specialized VLM may be needed to convert them to a domain-specific-language (DSL). Natural images may be kept as images, or can be captioned into text which is helpful for buidling search systems later.
As the final step, the outputs from the previous stages may be re-formatted to suit downstream use cases. For example, you may want to aggregate information from multiple tables into a single JSON output. Perhaps you’re looking to keep only specific paragraphs that mention specific topics, etc.
{"docsConfig":{"theme":"palm","$schema":"https://mintlify.com/docs.json","name":"Parseport","colors":{"primary":"#16A34A"},"logo":{"light":"https://mintcdn.com/parseport/KZLF7iZjsiOLCgyQ/logo/parseport_text_logo.svg?fit=max\u0026auto=format\u0026n=KZLF7iZjsiOLCgyQ\u0026q=85\u0026s=5b8b46b3856a6ce173e3e9bf3e2525a3","dark":"https://mintcdn.com/parseport/KZLF7iZjsiOLCgyQ/logo/parseport_text_logo.svg?fit=max\u0026auto=format\u0026n=KZLF7iZjsiOLCgyQ\u0026q=85\u0026s=5b8b46b3856a6ce173e3e9bf3e2525a3"},"favicon":"/logo/parseport_logo.svg","navbar":{"links":[{"label":"Support","href":"mailto:support@outerport.com"}]},"footer":{"socials":{"x":"https://x.com/outerport","github":"https://github.com/outerport","linkedin":"https://linkedin.com/company/outerport"}},"navigation":{"global":{"anchors":[{"anchor":"GitHub","icon":"book-open-cover","href":"https://github.com/parseport"},{"anchor":"PyPI","icon":"box","href":"https://pypi.org/project/parseport"},{"anchor":"Outerport","icon":"building","href":"https://outerport.com"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"parseport","hasAudioNarration":false,"actualSubdomain":"parseport","customDomains":["parserport.outerport.com"],"gitSource":{"type":"github","owner":"outerport","repo":"parseport","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"entitlements":{},"buildId":"6ae92a6e58f344c3168b206e:success","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"Guides","count":7},{"language":"default","tag":"Get Started","count":4},{"language":"default","tag":"Examples","count":3}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"get-started/document-ingestion","slug":"/get-started/document-ingestion","pageMetadata":{"title":"Document Ingestion","description":"An overview of the concepts around document ingestions","href":"/get-started/document-ingestion"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"An overview of the concepts around document ingestions\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={p:`p`,..._provideComponents(),...props.components},{Heading}=_components;if(!Heading)_missingMdxReference(`Heading`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`what-is-document-ingestion`,children:`What is Document Ingestion?`}),`\n`,_jsx(_components.p,{children:`The information contained in a raw PDF is messy. Even for a text-only PDF, the file does not encode semantic boundaries like paragraphs and sections, or even sentences. Instead, they are encoded as small text blocks with coordinates. Tables and charts are stored as lines and curves (i.e. vector graphics), and the content is not organized in tabular format.`}),`\n`,_jsx(_components.p,{children:`PDF files also often come from scanners, in which case they are effectively images and the data is not structured at all. The goal of document ingestion is to convert such data into formats that are easily consumable by downstream systems like LLMs / VLMs, RAG pipeline, or traditional databases.`}),`\n`,_jsx(_components.p,{children:`Document ingestion is sometimes casually referred to as OCR, which technically means recognizing texts in images. OCR is a part of document ingestion, but document ingestion also means turning the document into structured data like JSON or HTML.`}),`\n`,_jsx(Heading,{level:`2`,id:`are-vlms-not-enough`,children:`Are VLMs not Enough?`}),`\n`,_jsx(_components.p,{children:`Documents come in very diverse formats, varied across industries and use cases. While VLLMs are improving quickly, they are still not good enough to turn any kind of document from image to structured data in one shot. For tables and charts, accuracy is paramount, and missing one digit or a cell entry shifted by one column can critically change the content. These are very common problems in VLMs that claim to have solved OCR (try it yourself!)`}),`\n`,_jsx(_components.p,{children:`A much better solution is to break the problem into multiple stages that can be handled by specialized modules, some leveraging VLMs. It leads to higher accuracy, better handling of edge cases, and often cheaper and faster pipelines.`}),`\n`,_jsx(Heading,{level:`2`,id:`document-ingestion-pipeline`,children:`Document Ingestion Pipeline`}),`\n`,_jsx(Heading,{level:`3`,id:`layout-analysis`,children:`Layout Analysis`}),`\n`,_jsx(_components.p,{children:`The first stage of document processing is layout analysis. The goal of layout analysis is to identify bounding boxes within a page of a document for different semantic sections. For example, a page with table, a chart and paragraphs and a footer, need to be recognized as different elements. Layout analysis outputs a series of bounding box coordinates containing these elements.`}),`\n`,_jsx(_components.p,{children:`Note that the requirements for layout analysis can be different depending on the downstream purposes. For example, a formula within a paragraph can be either detected to be part of a paragraph, or as a separate element.`}),`\n`,_jsx(Heading,{level:`3`,id:`read-order-detection`,children:`Read Order Detection`}),`\n`,_jsx(_components.p,{children:`A step that is subtle but needed is read order detection. For a two-column page for example, a simple vertical and horizontal sweep will not cut it. The detected elements need to be re-ordered if knowing their relations in the context of the page is important. Depending on the use case, this step can be skipped.`}),`\n`,_jsx(Heading,{level:`3`,id:`content-extraction`,children:`Content Extraction`}),`\n`,_jsx(_components.p,{children:`In many use cases, once the different elements are detected, they need to be converted from images to text. For example, the image of a table is not useful unless it can be converted to tabular format. The goal of this stage is to turn the elements identified in the previous stages into text.`}),`\n`,_jsx(_components.p,{children:`For the image of a text paragraph in a scanned document, an OCR model can be used. There are good specialized models for handwriting recognition. For flowcharts, a specialized VLM may be needed to convert them to a domain-specific-language (DSL). Natural images may be kept as images, or can be captioned into text which is helpful for buidling search systems later.`}),`\n`,_jsx(Heading,{level:`3`,id:`final-processing`,children:`Final Processing`}),`\n`,_jsx(_components.p,{children:`As the final step, the outputs from the previous stages may be re-formatted to suit downstream use cases. For example, you may want to aggregate information from multiple tables into a single JSON output. Perhaps you’re looking to keep only specific paragraphs that mention specific topics, etc.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Document Ingestion","description":"An overview of the concepts around document ingestions","href":"/get-started/document-ingestion"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"What is Document Ingestion?","slug":"what-is-document-ingestion","depth":2,"children":[]},{"title":"Are VLMs not Enough?","slug":"are-vlms-not-enough","depth":2,"children":[]},{"title":"Document Ingestion Pipeline","slug":"document-ingestion-pipeline","depth":2,"children":[{"title":"Layout Analysis","slug":"layout-analysis","depth":3,"children":[]},{"title":"Read Order Detection","slug":"read-order-detection","depth":3,"children":[]},{"title":"Content Extraction","slug":"content-extraction","depth":3,"children":[]},{"title":"Final Processing","slug":"final-processing","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":[],"subdomain":"parseport","siteName":"Parseport","title":"Document Ingestion - Parseport","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-01-07T09:41:55.002Z","originalFileLocation":"get-started/document-ingestion.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"An overview of the concepts around document ingestions\">\u003cmeta data-mint-head name=\"application-name\" content=\"Parseport\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/parseport/5FtFv3zyjbaHb-08/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/parseport/5FtFv3zyjbaHb-08/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/parseport/5FtFv3zyjbaHb-08/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/parseport/5FtFv3zyjbaHb-08/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/parseport/5FtFv3zyjbaHb-08/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/parseport/5FtFv3zyjbaHb-08/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/parseport/5FtFv3zyjbaHb-08/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/parseport/5FtFv3zyjbaHb-08/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/parseport/5FtFv3zyjbaHb-08/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Document Ingestion - Parseport\">\u003cmeta data-mint-head property=\"og:description\" content=\"An overview of the concepts around document ingestions\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Parseport\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://parserport.outerport.com/get-started/document-ingestion\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://parseport.mintlify.site/_mintlify/api/og/v2?division=Get+Started\u0026amp;title=Document+Ingestion\u0026amp;description=An+overview+of+the+concepts+around+document+ingestions\u0026amp;theme=7b318d75d3175d766e75ff4f\u0026amp;signature=7a65146dcd429a4b2a31429f7faa2cee34b5013342121a2873e61d395de6eb5a\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Document Ingestion - Parseport\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"An overview of the concepts around document ingestions\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://parseport.mintlify.site/_mintlify/api/og/v2?division=Get+Started\u0026amp;title=Document+Ingestion\u0026amp;description=An+overview+of+the+concepts+around+document+ingestions\u0026amp;theme=7b318d75d3175d766e75ff4f\u0026amp;signature=7a65146dcd429a4b2a31429f7faa2cee34b5013342121a2873e61d395de6eb5a\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/parseport/5FtFv3zyjbaHb-08/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Parseport\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#16A34A\">\u003clink data-mint-head rel=\"canonical\" href=\"https://parserport.outerport.com/get-started/document-ingestion\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/get-started/document-ingestion.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://parserport.outerport.com/#organization\",\"name\":\"Parseport\",\"url\":\"https://parserport.outerport.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/parseport/KZLF7iZjsiOLCgyQ/logo/parseport_text_logo.svg?fit=max\u0026auto=format\u0026n=KZLF7iZjsiOLCgyQ\u0026q=85\u0026s=5b8b46b3856a6ce173e3e9bf3e2525a3\"}},{\"@type\":\"WebSite\",\"@id\":\"https://parserport.outerport.com#website\",\"name\":\"Parseport\",\"url\":\"https://parserport.outerport.com\",\"publisher\":{\"@id\":\"https://parserport.outerport.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://parserport.outerport.com/get-started/document-ingestion#webpage\",\"url\":\"https://parserport.outerport.com/get-started/document-ingestion\",\"name\":\"Document Ingestion\",\"description\":\"An overview of the concepts around document ingestions\",\"dateModified\":\"2026-01-07T09:41:55.002Z\",\"isPartOf\":{\"@id\":\"https://parserport.outerport.com#website\"},\"breadcrumb\":{\"@id\":\"https://parserport.outerport.com/get-started/document-ingestion#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://parserport.outerport.com/get-started/document-ingestion#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Get Started\",\"item\":\"https://parserport.outerport.com/get-started/tutorial\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Document Ingestion\",\"item\":\"https://parserport.outerport.com/get-started/document-ingestion\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://parserport.outerport.com/get-started/document-ingestion#article\",\"headline\":\"Document Ingestion\",\"name\":\"Document Ingestion\",\"description\":\"An overview of the concepts around document ingestions\",\"url\":\"https://parserport.outerport.com/get-started/document-ingestion\",\"mainEntityOfPage\":{\"@id\":\"https://parserport.outerport.com/get-started/document-ingestion#webpage\"},\"dateModified\":\"2026-01-07T09:41:55.002Z\",\"publisher\":{\"@id\":\"https://parserport.outerport.com/#organization\"},\"isPartOf\":{\"@id\":\"https://parserport.outerport.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Parseport\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Parseport\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/get-started/document-ingestion.md","siteName":"Parseport","nav":{"global":{"anchors":[{"anchor":"GitHub","icon":"book-open-cover","href":"https://github.com/parseport"},{"anchor":"PyPI","icon":"box","href":"https://pypi.org/project/parseport"},{"anchor":"Outerport","icon":"building","href":"https://outerport.com"}]},"tabs":[{"tab":"Guides","groups":[{"group":"Get Started","pages":[{"title":"Tutorial","href":"/get-started/tutorial"},{"title":"Overview","description":"A brief overview of the library","href":"/get-started/overview"},{"title":"Document Ingestion","href":"/get-started/document-ingestion"},{"title":"Open Source Tools","description":"Some useful pen source document processing tools and models.","href":"/get-started/open-source-tools"}]},{"group":"Examples","pages":[{"title":"Receipt to JSON","href":"/examples/receipts"},{"title":"Semantic Chunking","href":"/examples/semantic-chunking"},{"title":"Tables to CSV","href":"/examples/tables-to-csv"}]}]}]},"basePath":"","title":"Document Ingestion - Parseport","buildId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","deploymentId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","dynamics":[],"chunks":[]}