PageSourceSearch

https://www.pdf-tools.com/docs/assets/js/756298fa.1281d593.js

js pdf-tools.com collected 2026-09-24 19:01:31 UTC 28,018 bytes, 4 lines download raw bytes

1"use strict";(self.webpackChunkpdftools_doc=self.webpackChunkpdftools_doc||[]).push([["13148"],{374048(e,r,t){t.r(r),t.d(r,{metadata:()=>s,default:()=>p,frontMatter:()=>c,contentTitle:()=>l,toc:()=>d,assets:()=>a});var s=JSON.parse('{"id":"references/parameters/custom-profiles/README","title":"Custom profiles","description":"Create custom INI-format profiles to adjust preprocessing, recognition, synthesis, and other OCR processing parameters.","source":"@site/ocr-service_versioned_docs/version-1.1.3/references/parameters/custom-profiles/README.mdx","sourceDirName":"references/parameters/custom-profiles","slug":"/references/parameters/custom-profiles/","permalink":"/docs/ocr-service/1.1.3/references/parameters/custom-profiles/","draft":false,"unlisted":false,"tags":[{"inline":false,"label":"References","permalink":"/docs/ocr-service/1.1.3/tags/references","description":"Reference documentation for the Pdftools OCR Service configuration and parameters."},{"inline":false,"label":"Configuration parameters","permalink":"/docs/ocr-service/1.1.3/tags/configuration-parameters","description":"Reference documentation for OCR Service configuration parameters."},{"inline":false,"label":"Ocr profiles","permalink":"/docs/ocr-service/1.1.3/tags/ocr-profiles","description":"Documentation on OCR profiles for text recognition in the OCR Service."},{"inline":false,"label":"Custom profiles","permalink":"/docs/ocr-service/1.1.3/tags/custom-profiles","description":"Guides on creating and using custom OCR profiles in the OCR Service."}],"version":"1.1.3","frontMatter":{"title":"Custom profiles","description":"Create custom INI-format profiles to adjust preprocessing, recognition, synthesis, and other OCR processing parameters.","keywords":["ocr","optical character recognition","text extraction","image to text","document digitization","scanned document processing","searchable pdf","text recognition","ocr service","document automation","image processing","text extraction from images","ocr api","ocr software","document conversion","pdftools","pdftools ocr","supported languages","references","language configuration options"],"tags":["References","Configuration parameters","OCR profiles","Custom profiles"]},"sidebar":"ocrService","previous":{"title":"Parameters","permalink":"/docs/ocr-service/1.1.3/references/parameters/"},"next":{"title":"PrepareImageMode","permalink":"/docs/ocr-service/1.1.3/references/parameters/custom-profiles/prepareimagemode"}}'),n=t(474848),i=t(28453);t(506370);var o=t(971081);let c={title:"Custom profiles",description:"Create custom INI-format profiles to adjust preprocessing, recognition, synthesis, and other OCR processing parameters.",keywords:["ocr","optical character recognition","text extraction","image to text","document digitization","scanned document processing","searchable pdf","text recognition","ocr service","document automation","image processing","text extraction from images","ocr api","ocr software","document conversion","pdftools","pdftools ocr","supported languages","references","language configuration options"],tags:["References","Configuration parameters","OCR profiles","Custom profiles"]},l,a={},d=[...o.RM,{value:"Profile file format",id:"profile-file-format",level:2},{value:"Profile file structure",id:"profile-file-structure",level:3},{value:"How profiles are used",id:"how-profiles-are-used",level:3},{value:"Tips for writing effective profiles",id:"tips-for-writing-effective-profiles",level:2},{value:"Key INI file sections and their purpose",id:"key-ini-file-sections-and-their-purpose",level:2}];function f(e){let r={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(r.p,{children:"A custom profile is an INI-format configuration file that lets you adjust parameters for image preprocessing, page analysis, text recognition, and document synthesis. Custom profile settings take precedence over predefined profile settings."}),"\n",(0,n.jsx)(r.p,{children:"The following code is an example of a custom profile INI configuration file:"}),"\n",(0,n.jsx)(r.pre,{children:(0,n.jsx)(r.code,{className:"language-ini",children:"[PagePreprocessingParams]\nDiscardColorImage = false\n[RecognizerParams]\nMode = RM_Accurate\nTextLanguage = English,German\n"})}),"\n",(0,n.jsx)(o.Ay,{}),"\n",(0,n.jsx)(r.h2,{id:"profile-file-format",children:"Profile file format"}),"\n",(0,n.jsxs)(r.p,{children:["Custom profiles use the ",(0,n.jsx)(r.strong,{children:"INI format"}),". Each section is identified by a name in square brackets and contains key-value pairs that configure a specific aspect of OCR processing. You can add comments by starting a line with a semicolon (",(0,n.jsx)(r.code,{children:";"}),")."]}),"\n",(0,n.jsx)(r.p,{children:"Property values use the following formats:"}),"\n",(0,n.jsxs)(r.ul,{children:["\n",(0,n.jsxs)(r.li,{children:[(0,n.jsx)(r.strong,{children:"Boolean"}),": ",(0,n.jsx)(r.code,{children:"true"})," or ",(0,n.jsx)(r.code,{children:"false"})]}),"\n",(0,n.jsxs)(r.li,{children:[(0,n.jsx)(r.strong,{children:"Enum"}),": The constant name (for example, ",(0,n.jsx)(r.code,{children:"RM_Accurate"}),")"]}),"\n",(0,n.jsxs)(r.li,{children:[(0,n.jsx)(r.strong,{children:"String"}),": The value without quotes"]}),"\n"]}),"\n",(0,n.jsx)(r.h3,{id:"profile-file-structure",children:"Profile file structure"}),"\n",(0,n.jsx)(r.p,{children:"A profile consists of multiple sections, such as:"}),"\n",(0,n.jsxs)(r.ul,{children:["\n",(0,n.jsx)(r.li,{children:(0,n.jsx)(r.code,{children:"[PrepareImageMode]"})}),"\n",(0,n.jsx)(r.li,{children:(0,n.jsx)(r.code,{children:"[PagePreprocessingParams]"})}),"\n",(0,n.jsx)(r.li,{children:(0,n.jsx)(r.code,{children:"[DocumentProcessingParams]"})}),"\n",(0,n.jsx)(r.li,{children:(0,n.jsx)(r.code,{children:"[RecognizerParams]"})}),"\n",(0,n.jsx)(r.li,{children:(0,n.jsx)(r.code,{children:"[SynthesisParamsForPage]"})}),"\n"]}),"\n",(0,n.jsxs)(r.p,{children:["Each section contains key-value pairs that configure a particular aspect of OCR processing. For the full list of available sections, refer to ",(0,n.jsx)(r.a,{href:"#key-ini-file-sections-and-their-purpose",children:"Key INI file sections and their purpose"}),"."]}),"\n",(0,n.jsx)(r.h3,{id:"how-profiles-are-used",children:"How profiles are used"}),"\n",(0,n.jsxs)(r.ul,{children:["\n",(0,n.jsxs)(r.li,{children:["To use a custom profile, pass the path to the ",(0,n.jsx)(r.code,{children:"Profile"})," parameter."]}),"\n",(0,n.jsxs)(r.li,{children:["If you set both ",(0,n.jsx)(r.code,{children:"Profile"})," and ",(0,n.jsx)(r.code,{children:"PredefinedProfile"}),", the custom profile\u2019s values take precedence for any overlapping parameters."]}),"\n",(0,n.jsx)(r.li,{children:"Pdftools OCR Service validates the profile when processing begins."}),"\n"]}),"\n",(0,n.jsx)(r.admonition,{title:"File path",type:"warning",children:(0,n.jsx)(r.p,{children:"The profile file must exist on a path reachable by Pdftools OCR Service Manager. If Pdftools OCR Service can\u2019t find the file or the file contains syntax errors, it returns an error."})}),"\n",(0,n.jsx)(r.h2,{id:"tips-for-writing-effective-profiles",children:"Tips for writing effective profiles"}),"\n",(0,n.jsxs)(r.ul,{children:["\n",(0,n.jsx)(r.li,{children:"Always verify your INI file encoding (UTF-8 without BOM)."}),"\n",(0,n.jsx)(r.li,{children:"Build incrementally: start with minimal settings, then add new sections one at a time."}),"\n",(0,n.jsxs)(r.li,{children:["Don\u2019t turn on modules you don\u2019t need. For example, ",(0,n.jsx)(r.code,{children:"DetectBarcodes"})," unless required."]}),"\n",(0,n.jsx)(r.li,{children:"Use language combinations carefully. More languages increase processing time."}),"\n",(0,n.jsx)(r.li,{children:"Prefer 300 DPI images for optimal OCR accuracy."}),"\n"]}),"\n",(0,n.jsx)(r.h2,{id:"key-ini-file-sections-and-their-purpose",children:"Key INI file sections and their purpose"}),"\n",(0,n.jsx)(r.p,{children:"The following table includes links to the references of specific INI file sections:"}),"\n",(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"INI f
1ile section"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:(0,n.jsx)(r.a,{href:"/docs/ocr-service/1.1.3/references/parameters/custom-profiles/prepareimagemode",children:(0,n.jsx)(r.code,{children:"[PrepareImageMode]"})})}),(0,n.jsx)(r.td,{children:"Configure image preparation: compression, document type, image source type, and annotations."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:(0,n.jsx)(r.a,{href:"/docs/ocr-service/1.1.3/references/parameters/custom-profiles/imageprocessingparams",children:(0,n.jsx)(r.code,{children:"[ImageProcessingParams]"})})}),(0,n.jsx)(r.td,{children:"Adjust rotation, mirroring, and color inversion for image blocks."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:(0,n.jsx)(r.a,{href:"/docs/ocr-service/1.1.3/references/parameters/custom-profiles/documentprocessingparams",children:(0,n.jsx)(r.code,{children:"[DocumentProcessingParams]"})})}),(0,n.jsx)(r.td,{children:"Control whether document synthesis runs."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:(0,n.jsx)(r.a,{href:"/docs/ocr-service/1.1.3/references/parameters/custom-profiles/pageprocessingparams",children:(0,n.jsx)(r.code,{children:"[PageProcessingParams]"})})}),(0,n.jsx)(r.td,{children:"Configure preprocessing, layout analysis, and recognition."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:(0,n.jsx)(r.a,{href:"/docs/ocr-service/1.1.3/references/parameters/custom-profiles/pagepreprocessingparams",children:(0,n.jsx)(r.code,{children:"[PagePreprocessingParams]"})})}),(0,n.jsx)(r.td,{children:"Set options for correcting orientation, skew, geometry, resolution, binarization, and cropping."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:(0,n.jsx)(r.a,{href:"/docs/ocr-service/1.1.3/references/parameters/custom-profiles/pageanalysisparams",children:(0,n.jsx)(r.code,{children:"[PageAnalysisParams]"})})}),(0,n.jsx)(r.td,{children:"Control layout analysis: detect tables, images, barcodes, and structures."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:(0,n.jsx)(r.a,{href:"/docs/ocr-service/1.1.3/references/parameters/custom-profiles/tableanalysisparams",children:(0,n.jsx)(r.code,{children:"[TableAnalysisParams]"})})}),(0,n.jsx)(r.td,{children:"Configure table structure analysis and interpretation."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:(0,n.jsx)(r.a,{href:"/docs/ocr-service/1.1.3/references/parameters/custom-profiles/textlayerinjectionparams",children:(0,n.jsx)(r.code,{children:"[TextLayerInjectionParams]"})})}),(0,n.jsx)(r.td,{children:"Tune parameters for creating a searchable PDF with text layer injection."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:(0,n.jsx)(r.a,{href:"/docs/ocr-service/1.1.3/references/parameters/custom-profiles/barcodeparams",children:(0,n.jsx)(r.code,{children:"[BarcodeParams]"})})}),(0,n.jsx)(r.td,{children:"Detect, decode, and configure interpretation of barcode types."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:(0,n.jsx)(r.a,{href:"/docs/ocr-service/1.1.3/references/parameters/custom-profiles/objectsextractionparams",children:(0,n.jsx)(r.code,{children:"[ObjectsExtractionParams]"})})}),(0,n.jsx)(r.td,{children:"Manage object extraction, noise cleanup, and embedded text detection."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:(0,n.jsx)(r.a,{href:"/docs/ocr-service/1.1.3/references/parameters/custom-profiles/recognizerparams",children:(0,n.jsx)(r.code,{children:"[RecognizerParams]"})})}),(0,n.jsx)(r.td,{children:"Define OCR language, text types, recognition speed, and fine-tuning."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:(0,n.jsx)(r.a,{href:"/docs/ocr-service/1.1.3/references/parameters/custom-profiles/sortingblocksparams",children:(0,n.jsx)(r.code,{children:"[SortingBlocksParams]"})})}),(0,n.jsx)(r.td,{children:"Set parameters for combining blocks of data into groups."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:(0,n.jsx)(r.a,{href:"/docs/ocr-service/1.1.3/references/parameters/custom-profiles/synthesisparamsforpage",children:(0,n.jsx)(r.code,{children:"[SynthesisParamsForPage]"})})}),(0,n.jsx)(r.td,{children:"Configure page-level layout synthesis and formatting detection."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:(0,n.jsx)(r.a,{href:"/docs/ocr-service/1.1.3/references/parameters/custom-profiles/synthesisparamsfordocument",children:(0,n.jsx)(r.code,{children:"[SynthesisParamsForDocument]"})})}),(0,n.jsx)(r.td,{children:"Manage document-level synthesis, structure, formatting, and memory usage."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:(0,n.jsx)(r.a,{href:"/docs/ocr-service/1.1.3/references/parameters/custom-profiles/documentstructuredetectionparams",children:(0,n.jsx)(r.code,{children:"[DocumentStructureDetectionParams]"})})}),(0,n.jsx)(r.td,{children:"Configure document structure detection: headlines, footnotes, table of contents, and columns."})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:(0,n.jsx)(r.a,{href:"/docs/ocr-service/1.1.3/references/parameters/custom-profiles/fontformattingdetectionparams",children:(0,n.jsx)(r.code,{children:"[FontFormattingDetectionParams]"})})}),(0,n.jsx)(r.td,{children:"Detect bold, italic, font size, spacing, and other typographic features."})]})]})]})]})}function p(e={}){let{wrapper:r}={...(0,i.R)(),...e.components};return r?(0,n.jsx)(r,{...e,children:(0,n.jsx)(f,{...e})}):f(e)}},971081(e,r,t){t.d(r,{Ay:()=>a,RM:()=>c});var s=t(474848),n=t(28453),i=t(751241),o=t(366497);let c=[];function l(e){let r={code:"code",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,n.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(r.p,{children:"To configure a custom profile for specific OCR processing behavior, follow these steps:"}),"\n",(0,s.jsxs)(r.ol,{children:["\n",(0,s.jsx)(r.li,{children:"Create a custom profile INI f
1ile."}),"\n",(0,s.jsxs)(r.li,{children:["In the Conversion Service Configurator, go to ",(0,s.jsx)(r.strong,{children:"Workflows & Profiles"}),"."]}),"\n",(0,s.jsxs)(r.li,{children:["Click the pen icon ",(0,s.jsx)(i.A,{className:"inline_svg"})," next to the workflow profile you want to edit."]}),"\n",(0,s.jsxs)(r.li,{children:["Navigate to the ",(0,s.jsx)(r.strong,{children:"OCR Settings"})," section."]}),"\n",(0,s.jsxs)(r.li,{children:["Next to ",(0,s.jsx)(r.strong,{children:"Engine"}),", click the pen icon ",(0,s.jsx)(i.A,{className:"inline_svg"})," in the ",(0,s.jsx)(r.strong,{children:"Pdftools OCR Service (3H Legacy Compatible)"})," section.","\n",(0,s.jsx)("div",{className:"resized-image-wrapper-small-tiny",children:(0,s.jsx)("img",{src:(0,o.default)("/img/cs-ocr-configuration.png"),alt:"Integration tab of the Conversion Service Configurator"})}),"\n"]}),"\n",(0,s.jsxs)(r.li,{children:["In the ",(0,s.jsx)(r.strong,{children:"Parameters"})," input field, include a path to your INI file, for example:","\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-bash",children:'Profile="C:\\ocr\\profiles\\document_conversion_high_accuracy.ini"\n'})}),"\n"]}),"\n",(0,s.jsxs)(r.li,{children:["After editing your configuration, click ",(0,s.jsx)(r.strong,{children:"Apply"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(r.p,{children:["The INI file must be on the ",(0,s.jsx)(r.strong,{children:"same"})," machine as the ",(0,s.jsx)(r.strong,{children:"Pdftools OCR Service Manager"})," node. If both ",(0,s.jsx)(r.code,{children:"Profile"})," and ",(0,s.jsx)(r.code,{children:"PredefinedProfile"})," are set, the custom ",(0,s.jsx)(r.code,{children:"Profile"})," ",(0,s.jsx)(r.strong,{children:"overrides"})," the predefined profile."]})]})}function a(e={}){let{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,s.jsx)(r,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},625701(e,r,t){t.d(r,{A:()=>o});var s,n=t(296540);function i(){return(i=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var s in t)({}).hasOwnProperty.call(t,s)&&(e[s]=t[s])}return e}).apply(null,arguments)}let o=({title:e,titleId:r,...t})=>n.createElement("svg",i({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 38 42","aria-labelledby":r},t),e?n.createElement("title",{id:r},e):null,n.createElement("path",{fill:"#283593",fillRule:"evenodd",d:"M17.903.286a2.25 2.25 0 0 1 2.193 0L36.903 9.72A2.12 2.12 0 0 1 38 11.566v18.867c0 .762-.418 1.466-1.097 1.847l-16.807 9.434a2.25 2.25 0 0 1-2.193 0L1.096 32.28A2.12 2.12 0 0 1 0 30.434V11.567c0-.762.418-1.466 1.097-1.847C4.451 7.837 14.549 2.17 17.903.286",clipRule:"evenodd",style:{fill:"#004482",fillOpacity:1}}),n.createElement("path",{fill:"#5c6bc0",fillRule:"evenodd",d:"M.304 31.404C.038 31.048 0 30.71 0 30.255V11.496c0-.758.417-1.458 1.094-1.836L17.842.28c.677-.379 1.594-.37 2.271.008 3.343 1.872 13.371 7.46 16.714 9.331.27.152.476.335.66.576z",clipRule:"evenodd",style:{fill:"#659ad2",fillOpacity:1}}),s||(s=n.createElement("path",{fill:"#fff",fillRule:"evenodd",d:"M19 7c7.727 0 14 6.273 14 14s-6.273 14-14 14S5 28.727 5 21 11.273 7 19 7m0 7c3.863 0 7 3.136 7 7s-3.137 7-7 7-7-3.137-7-7 3.136-7 7-7",clipRule:"evenodd"})),n.createElement("path",{fill:"#3949ab",fillRule:"evenodd",d:"M37.485 10.205c.516.483.506 1.211.506 1.784 0 3.795-.032 14.59.009 18.384.004.396-.127.813-.323 1.127L18.593 21z",clipRule:"evenodd",style:{fill:"#00599c",fillOpacity:1}}))},111636(e,r,t){t.d(r,{A:()=>c});var s,n,i=t(296540);function o(){return(o=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var s in t)({}).hasOwnProperty.call(t,s)&&(e[s]=t[s])}return e}).apply(null,arguments)}let c=({title:e,titleId:r,...t})=>i.createElement("svg",o({xmlns:"http://www.w3.org/2000/svg",viewBox:"3.99 0 23.6 32","aria-labelledby":r},t),e?i.createElement("title",{id:r},e):null,s||(s=i.createElement("path",{fill:"#4e7896",d:"M11.622 24.74s-1.23.748.855.962c2.51.32 3.847.267 6.625-.267a10 10 0 0 0 1.763.855c-6.25 2.672-14.16-.16-9.244-1.55zm-.8-3.473s-1.336 1.015.748 1.23c2.725.267 4.862.32 8.5
15-.427a3.26 3.26 0 0 0 1.282.801c-7.534 2.244-15.976.214-10.58-1.603zm14.747 6.09s.908.748-1.015 1.336c-3.58 1.07-15.014 1.39-18.22 0-1.122-.48 1.015-1.175 1.7-1.282.695-.16 1.07-.16 1.07-.16-1.23-.855-8.175 1.763-3.526 2.51 12.77 2.084 23.296-.908 19.983-2.404zM12.2 17.633s-5.824 1.39-2.084 1.87c1.603.214 4.755.16 7.694-.053 2.404-.214 4.81-.64 4.81-.64s-.855.374-1.443.748c-5.93 1.55-17.312.855-14.052-.748 2.778-1.336 5.076-1.175 5.076-1.175zm10.42 5.824c5.984-3.1 3.206-6.09 1.282-5.717-.48.107-.695.214-.695.214s.16-.32.534-.427c3.794-1.336 6.786 4.007-1.23 6.09 0 0 .053-.053.107-.16zm-9.83 8.442c5.77.374 14.587-.214 14.8-2.94 0 0-.427 1.07-4.755 1.87-4.916.908-11.007.8-14.587.214 0 0 .748.64 4.542.855z"})),n||(n=i.createElement("path",{fill:"#f58219",d:"M18.996.001s3.313 3.366-3.152 8.442c-5.183 4.114-1.175 6.465 0 9.137-3.046-2.725-5.236-5.13-3.74-7.373C14.294 6.893 20.332 5.3 18.996.001m-1.7 15.335c1.55 1.763-.427 3.366-.427 3.366s3.954-2.03 2.137-4.542c-1.656-2.404-2.94-3.58 4.007-7.587 0 0-10.953 2.725-5.717 8.763"})))},751241(e,r,t){t.d(r,{A:()=>o});var s,n=t(296540);function i(){return(i=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var s in t)({}).hasOwnProperty.call(t,s)&&(e[s]=t[s])}return e}).apply(null,arguments)}let o=({title:e,titleId:r,...t})=>n.createElement("svg",i({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512","aria-labelledby":r},t),e?n.createElement("title",{id:r},e):null,s||(s=n.createElement("path",{d:"m362.7 19.3-48.4 48.4 130 130 48.4-48.4c25-25 25-65.5 0-90.5l-39.4-39.5c-25-25-65.5-25-90.5 0zm-71 71L58.6 323.5c-10.4 10.4-18 23.3-22.2 37.4L1 481.2c-2.5 8.5-.2 17.6 6 23.8s15.3 8.5 23.7 6.1L151 475.7c14.1-4.2 27-11.8 37.4-22.2l233.3-233.2z"})))},308798(e,r,t){t.d(r,{A:()=>l});var s,n,i,o=t(296540);function c(){return(c=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var s in t)({}).hasOwnProperty.call(t,s)&&(e[s]=t[s])}return e}).apply(null,arguments)}let l=({title:e,titleId:r,...t})=>o.createElement("svg",c({xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",viewBox:"0 0 111.16 134.67","aria-labelledby":r},t),e?o.createElement("title",{id:r},e):null,o.createElement("defs",null,o.createElement("linearGradient",{id:"c"},o.createElement("stop",{offset:0,style:{stopColor:"#b8b8b8",stopOpacity:.49803922}}),o.createElement("stop",{offset:1,style:{stopColor:"#7f7f7f",stopOpacity:0}})),o.createElement("linearGradient",{id:"a"},o.createElement("stop",{offset:0,style:{stopColor:"#ffd43b",stopOpacity:1}}),o.createElement("stop",{offset:1,style:{stopColor:"#ffe873",stopOpacity:1}})),o.createElement("linearGradient",{id:"b"},o.createElement("stop",{offset:0,style:{stopColor:"#5a9fd4",stopOpacity:1}}),o.createElement("stop",{offset:1,style:{stopColor:"#306998",stopOpacity:1}})),s||(s=o.createElement("linearGradient",{xlinkHref:"#a",id:"e",x1:150.961,x2:112.031,y1:192.352,y2:137.273,gradientTransform:"matrix(.56254 0 0 .56797 -14.991 -11.702)",gradientUnits:"userSpaceOnUse"})),n||(n=o.createElement("linearGradient",{xlinkHref:"#b",id:"d",x1:26.649,x2:135.665,y1:20.604,y2:114.398,gradientTransform:"matrix(.56254 0 0 .56797 -14.991 -11.702)",gradientUnits:"userSpaceOnUse"})),i||(i=o.createElement("radialGradient",{xlinkHref:"#c",id:"f",cx:61.519,cy:132.286,r:29.037,fx:61.519,fy:132.286,gradientTransform:"matrix(0 -.23995 1.05467 0 -83.7 142.462)",gradientUnits:"userSpaceOnUse"}))),o.createElement("path",{d:"M54.919 0c-4.584.022-8.961.413-12.813 1.095C30.76 3.099 28.7 7.295 28.7 15.032v10.219h26.813v3.406H18.638c-7.793 0-14.616 4.684-16.75 13.594-2.462 10.213-2.571 16.586 0 27.25 1.905 7.938 6.457 13.594 14.25 13.594h9.218v-12.25c0-8.85 7.657-16.657 16.75-16.657h26.782c7.454 0 13.406-6.138 13.406-13.625v-25.53c0-7.267-6.13-12.726-13.406-13.938C64.282.328 59.502-.02 54.918 0m-14.5 8.22c2.77 0 5.031 2.298 5.031 5.125 0 2.816-2.262 5.093-5.031 5.093-2.78 0-5.031-2.277-5.031-5.093 0-2.827 2.251-5.125 5.03-5.125",style:{fill:"url(#d)",fillOpacity:1}}),o.createElement("path",{d:"M85.638 28.657v11.906c0 9.231-7.826 17-16.75 17H42.106c-7.336 0-13.406 6.279-13.406 13.625V96.72c0 7.266 6.319 11.54 13.406 13.625 8.488 2.495 16.627 2.946 26.782 0 6.75-1.955 13.406-5.888 13.406-13.625V86.5H55.513v-3.405H95.7c7.793 0 10.696-5.43
16 13.406-13.594 2.8-8.399 2.68-16.476 0-27.25-1.925-7.758-5.604-13.594-13.406-13.594zM70.575 93.313c2.78 0 5.031 2.278 5.031 5.094 0 2.827-2.251 5.125-5.031 5.125-2.77 0-5.031-2.298-5.031-5.125 0-2.816 2.261-5.094 5.031-5.094",style:{fill:"url(#e)",fillOpacity:1}}),o.createElement("ellipse",{cx:55.817,cy:127.701,rx:35.931,ry:6.967,style:{opacity:.44382,fill:"url(#f)",fillOpacity:1,fillRule:"nonzero",stroke:"none",strokeWidth:15.4174,strokeMiterlimit:4,strokeDasharray:"none",strokeOpacity:1}}))},506370(e,r,t){t.d(r,{A:()=>a});var s=t(474848);t(296540);var n=t(634164),i=t(588260),o=t(894688);function c({className:e}){let r=(0,i.a4)();return(0,s.jsx)(a,{items:r,className:e})}function l({item:e}){return(0,s.jsx)("article",{className:(0,n.A)("docCardListItem_W1sv","col col--6"),children:(0,s.jsx)(o.A,{item:e})})}function a(e){let{items:r,className:t}=e;if(!r)return(0,s.jsx)(c,{...e});let o=(0,i.d1)(r);return(0,s.jsx)("section",{className:(0,n.A)("row",t),children:o.map((e,r)=>(0,s.jsx)(l,{item:e},r))})}},616497(e,r,t){t.d(r,{W:()=>l});var s=t(296540),n=t(610898);let i=["zero","one","two","few","many","other"];function o(e){return i.filter(r=>e.includes(r))}let c={locale:"en",pluralForms:o(["one","other"]),select:e=>1===e?"one":"other"};function l(){let e=function(){let{i18n:{currentLocale:e}}=(0,n.default)();return(0,s.useMemo)(()=>{try{let r;return r=new Intl.PluralRules(e),{locale:e,pluralForms:o(r.resolvedOptions().pluralCategories),select:e=>r.select(e)}}catch(r){return console.error(`Failed to use Intl.PluralRules for locale "${e}".
2Docusaurus will fallback to the default (English) implementation.
3Error: ${r.message}
4`),c}},[e])}();return{selectMessage:(r,t)=>(function(e,r,t){let s=e.split("|");if(1===s.length)return s[0];s.length>t.pluralForms.length&&console.error(`For locale=${t.locale}, a maximum of ${t.pluralForms.length} plural forms are expected (${t.pluralForms.join(",")}), but the message contains ${s.length}: ${e}`);let n=t.select(r);return s[Math.min(t.pluralForms.indexOf(n),s.length-1)]})(t,r,e)}}},894688(e,r,t){t.d(r,{A:()=>C});var s,n,i=t(474848),o=t(296540),c=t(634164),l=t(395310),a=t(588260),d=t(616497),f=t(358310),p=t(330568),h=t(272072),u=t(625701),m=t(308798),g=t(111636);function x(){return(x=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var s in t)({}).hasOwnProperty.call(t,s)&&(e[s]=t[s])}return e}).apply(null,arguments)}let j=({title:e,titleId:r,...t})=>o.createElement("svg",x({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 456 456","aria-labelledby":r},t),e?o.createElement("title",{id:r},e):null,s||(s=o.createElement("path",{fill:"#512BD4",d:"M0 0h456v456H0z"})),n||(n=o.createElement("path",{fill:"#fff",d:"M81.274 291.333q-4.836 0-8.222-3.223-3.386-3.306-3.386-7.851 0-4.629 3.386-7.934t8.222-3.306q4.917 0 8.302 3.306 3.466 3.305 3.466 7.934 0 4.545-3.466 7.851-3.385 3.223-8.302 3.223M210.167 289.515h-20.958l-55.215-87.109a39 39 0 0 1-3.466-6.86h-.484q.645 3.802.645 16.281v77.688h-18.54V171h22.328l53.362 85.043q3.385 5.29 4.353 7.273h.322q-.806-4.71-.806-15.951V171h18.459zM300.449 289.515h-64.888V171h62.309v16.695h-43.124v33.554h39.739v16.612h-39.739v35.042h45.703zM392.667 187.695h-33.21v101.82h-19.185v-101.82h-33.129V171h85.524z"})));function v({href:e,children:r}){return(0,i.jsx)(l.default,{href:e,className:(0,c.A)("card padding--lg","cardContainer_S8oU"),children:r})}function y({href:e,icon:r,title:t,description:s}){return(0,i.jsxs)(v,{href:e,children:[(0,i.jsxs)(h.default,{as:"h2",className:(0,c.A)("text--truncate","cardTitle_HoSo"),title:t,children:[r," ",t]}),s&&(0,i.jsx)("p",{className:(0,c.A)("text--truncate","cardDescription_c27F"),title:s,children:s})]})}function b({item:e}){let r=(0,a.Nr)(e),t=function(){let{selectMessage:e}=(0,d.W)();return r=>e(r,(0,p.translate)({message:"1 item|{count} items",id:"theme.docs.DocCard.categoryDescription.plurals",description:"The default description for a category card in the generated index about how many items this category includes"},{count:r}))}();return r?(0,i.jsx)(y,{href:r,icon:"\u{1F5C3}\uFE0F",title:e.label,description:e.description??t(e.items.length)}):null}function w({item:e}){let r=(0,f.A)(e.href)?"\u{1F4C4}\uFE0F":"\u{1F517}",t=(e=>{switch(e){case"C":return(0,i.jsx)(u.A,{className:"getting_started_icons"});case"Java":return(0,i.jsx)(g.A,{className:"getting_started_icons"});case"Python":return(0,i.jsx)(m.A,{className:"getting_started_icons"});case".NET":return(0,i.jsx)(j,{className:"getting_started_icons"});default:return}})(e.label),s=(0,a.cC)(e.docId??void 0);return(0,i.jsx)(y,{href:e.href,icon:t||r,title:e.label,description:e.description??s?.description})}function C({item:e}){switch(e.type){case"link":return(0,i.jsx)(w,{item:e});case"category":return(0,i.jsx)(b,{item:e});default:throw Error(`unknown item type ${JSON.stringify(e)}`)}}},28453(e,r,t){t.d(r,{R:()=>o,x:()=>c});var s=t(296540);let n={},i=s.createContext(n);function o(e){let r=s.useContext(i);return s.useMemo(function(){return"function"==typeof e?e(r):{...r,...e}},[r,e])}function c(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:o(e.components),s.createElement(i.Provider,{value:r},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.