{"id":2438,"date":"2025-04-08T16:52:01","date_gmt":"2025-04-08T05:52:01","guid":{"rendered":"https:\/\/bornfree.life\/2024\/?p=2438"},"modified":"2026-03-26T22:43:12","modified_gmt":"2026-03-26T11:43:12","slug":"oligoscan-tool","status":"publish","type":"page","link":"https:\/\/bornfree.life\/learn\/oligoscan-tool\/","title":{"rendered":"Oligoscan PDF Processor"},"content":{"rendered":"\n\n\n<div class=\"flex flex-col gap-5 items-center title-container\"><a href=\"https:\/\/bornfree.life\/learn\/oligoscan-tool\/\"><h1 class=\"text-center text-5xl text-blue-title font-semibold\">\n        Oligoscan PDF Processor      <\/h1><\/a>\n\n          <\/div>\n\n    <div class=\"border-t h-px border-default-border w-full\"><br><\/div><p><br><\/p>\n<p><\/p><em><strong>Version: 1.6.3<\/strong><\/em><strong><br><\/strong><br><strong>DISCLAIMER:<\/strong> <br>This unofficial analysis tool is a &#8220;best effort&#8221; to interpret Oligoscan PDF reports.&nbsp;<strong>Example outputs for&nbsp;<a href=\"https:\/\/bornfree.life\/learn\/wp-content\/uploads\/2026\/02\/Corr_Oligoscan-example-page1-scaled.png\" target=\"_blank\">[page 1]<\/a> and <a href=\"https:\/\/bornfree.life\/learn\/wp-content\/uploads\/2026\/02\/Corr_Oligoscan-example-page2-scaled.png\" target=\"_blank\">[page 2]<\/a>.<\/strong>&nbsp;<br>It can and will continue to evolve over time, \nand should never be taken as medical advice or a prescription.<strong>&nbsp;<br><br><\/strong><strong>Background: <\/strong><br>Oligoscan provides a highly convenient way to estimate intracellular mineral data. However, there are currently a number of limitations that prevent the data from being used at face value, eg. <br>1. Skin calcium and iron markers are not helpful in understanding systemic levels, as 99% of calcium is stored in skeletal tissue and 75% of iron is circulating.<br>2. The standard lower and upper thresholds for indicating severe deficiencies are not sensitive enough.<br>3. The Oligoscan practitioner&#8217;s handbook indicates certain mineral elevations need to be inverted and re-interpreted as &#8220;low&#8221;. My analysis of Oligoscan reports vs data obtained from simultaneous &#8220;white blood cell nutrients&#8221; testing suggests this should apply to a wider array of markers. Further analysis is needed.<br>4. Helpful biochemistry details regarding specific deficiencies are not provided in the standard report.<br><br>In the future, it&#8217;s entirely possible the company behind Oligoscan may update their reports around these and other observations. In the meantime, you can either consult an Oligoscan practitioner to interpret your report,&nbsp; or use the tool below.<br><br><em>Notes and known limitations: <\/em><br> 1. <strong>(2026-03-20) Now also works with multilingual SO\/Check reports (beta, needs further testing in multiple languages).<\/strong><br>2. Untested on Oligoscan reports generated in languages other than English and French, however <em>should<\/em> support others&#8230;<br>3. <strong>This tool works reliably on the ORIGINAL EMAILED PDF results<\/strong> &#8211; photos and scanned images of these reports will trigger an attempt at OCR extraction <em>(experimental)<\/em>, however this method can easily introduce errors, depending on image quality.&nbsp;<br>4. Uploading Oligoscan &#8220;comparison reports&#8221; will not work, however <strong>you can generate comparisons for up to 5 individual reports using this tool, using any combination of original (emailed, not-OCR&#8217;d) and\/or already processed reports (which may also include successfully OCR&#8217;d versions)<\/strong>.<br>5. Output PDF reports have been simplified to show mineral results as deviation% from &#8220;ideal&#8221;. However, if you&#8217;d also like the raw data, it is contained in the optional CSV file.<br>6. As of v1.0.1, mineral test report data deviation% is now aligned to SO\/Check scaling.<br>7. <strong>As of v1.6.1, heavy metal report data deviation% is now aligned to SO\/Check scaling. This is automatically detected and accommodated in comparison reports.<\/strong><br>8. Customised branding, images and messages are now available for clinicians. Please use the enquiry form below for more information.<br><br><em>Privacy statement: All tasks are performed locally in your web browser. The Oligoscan practitioner&#8217;s contact details on the original report are used to query a database and determine if any visual customisations are to be applied to the generated PDF report. Your personal data is not transmitted, collected or used for any purpose.<\/em>\n    <div class=\"oligoscan-processor-wrap\">\n        <div class=\"osp-card\">\n            <div id=\"ospDropzone\" class=\"osp-dropzone\" tabindex=\"0\" role=\"button\" aria-label=\"Upload Oligoscan PDF\">\n                <input type=\"file\" id=\"ospFileInput\" accept=\"application\/pdf,.pdf\" aria-label=\"Choose Oligoscan PDF\">\n                <div class=\"osp-drop-inner\">\n                    <div class=\"osp-drop-icon\" aria-hidden=\"true\">\ud83d\udcc4<\/div>\n                    <div class=\"osp-drop-text\"><strong>Drop your Oligoscan PDF<\/strong> or<\/div>\n                    <button type=\"button\" id=\"ospChooseBtn\" class=\"osp-btn osp-btn--primary\">Choose PDF<\/button>\n                    <div id=\"ospFileName\" class=\"osp-file-name\" aria-live=\"polite\"><\/div>\n                <\/div>\n            <\/div>\n\n            <div class=\"osp-actions\">\n                <button id=\"ospProcessButton\" class=\"osp-btn\" disabled title=\"Re-process the current file\">Re-process<\/button>\n                <div class=\"osp-actions__spacer\"><\/div>\n                <button id=\"ospDownloadCsvButton\" class=\"osp-btn osp-btn--ghost\" style=\"display:none;\">Download CSV<\/button>\n                <button id=\"ospDownloadPdfButton\" class=\"osp-btn osp-btn--ghost\" style=\"display:none;\">Download PDF<\/button>\n            <\/div>\n            <div class=\"osp-options\" aria-label=\"Options\">\n                <label class=\"osp-option\">\n                    <input type=\"checkbox\" id=\"ospOptRemoveNamesDob\">\n                    <span>Remove all names and DOB<\/span>\n                <\/label>\n                <label class=\"osp-option\" style=\"margin-left:14px;\">\n                    <input type=\"checkbox\" id=\"ospOptComparisonMode\">\n                    <span>Generate comparison from multiple reports (max 5)<\/span>\n                <\/label>\n            <\/div>\n\n            <div id=\"ospStatus\" class=\"osp-status info\" aria-live=\"polite\"><\/div>\n\n            <div id=\"ospLoader\" class=\"osp-loader\" aria-hidden=\"true\" style=\"display:none;\">\n                <span class=\"osp-spinner\" aria-hidden=\"true\"><\/span>\n                <span>Processing\u2026<\/span>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <style>\n        :root {\n            --osp-bg: #0b0f13;\n            --osp-card: #121820;\n            --osp-border: #1e2835;\n            --osp-text: #e8eef5;\n            --osp-muted: #9fb1c7;\n            --osp-primary: #4da3ff;\n            --osp-primary-2: #7bb3ff;\n            --osp-success: #33c38e;\n            --osp-error: #ff6767;\n            --osp-shadow: 0 8px 30px rgba(0,0,0,0.25);\n        }\n        .oligoscan-processor-wrap { color: var(--osp-text); }\n        .osp-card {\n            background: var(--osp-card);\n            border: 1px solid var(--osp-border);\n            border-radius: 14px;\n            padding: 18px;\n            box-shadow: var(--osp-shadow);\n        }\n        .osp-dropzone {\n            position: relative;\n            border: 1px dashed var(--osp-border);\n            border-radius: 12px;\n            background: linear-gradient(180deg, rgba(255,255,255,0.02), rgba(255,255,255,0.00));\n            padding: 20px;\n            text-align: center;\n            transition: border-color .2s, background .2s, transform .1s;\n            outline: none;\n        }\n        .osp-dropzone:hover, .osp-dropzone:focus, .osp-dropzone.osp-dropzone--over {\n            border-color: var(--osp-primary);\n            background: rgba(77,163,255,0.07);\n        }\n        .osp-dropzone:active { transform: scale(0.995); }\n        .osp-dropzone input[type=\"file\"] {\n            position: absolute; inset: 0; width: 100%; height: 100%;\n            opacity: 0; cursor: pointer;\n        }\n        .osp-drop-inner { display: grid; gap: 8px; place-items: center; }\n        .osp-drop-icon { font-size: 32px; }\n        .osp-drop-text { color: var(--osp-muted); }\n        .osp-file-name { margin-top: 6px; color: var(--osp-text); font-size: 13px; opacity: .9; }\n\n        .osp-actions {\n            display: flex; align-items: center; gap: 8px;\n            margin: 14px 0 8px 0;\n        }\n        .osp-actions__spacer { flex: 1; }\n        .osp-options {\n            margin: 8px 0 6px 0;\n            padding: 10px 12px;\n            border: 1px solid var(--osp-border);\n            border-radius: 10px;\n            background: #0f141b;\n        }\n        .osp-option {\n            display: inline-flex; align-items: center; gap: 8px;\n            font-size: 13px; color: var(--osp-text);\n        }\n        .osp-option input[type=\"checkbox\"] { transform: translateY(0.5px); }\n\n        .osp-btn {\n            appearance: none; border: 1px solid var(--osp-border);\n            background: #0f141b; color: var(--osp-text);\n            padding: 8px 12px; border-radius: 10px; font-size: 13px;\n            line-height: 1; cursor: pointer; transition: all .15s ease;\n        }\n        .osp-btn:hover { border-color: var(--osp-primary); color: #fff; }\n        .osp-btn:disabled { opacity: .5; cursor: not-allowed; }\n\n        .osp-btn--primary {\n            border-color: transparent;\n            background: linear-gradient(180deg, var(--osp-primary), var(--osp-primary-2));\n            color: #0a0f14; font-weight: 600;\n        }\n        .osp-btn--primary:hover { filter: brightness(1.06); }\n        .osp-btn--ghost {\n            background: transparent; color: var(--osp-muted);\n        }\n        .osp-btn--ghost:hover { color: #fff; border-color: var(--osp-primary); }\n\n        .osp-status { margin-top: 6px; font-size: 13px; color: var(--osp-muted); }\n        .osp-status.success { color: var(--osp-success); }\n        .osp-status.error { color: var(--osp-error); }\n\n        .osp-loader {\n            display: inline-flex; align-items: center; gap: 8px;\n            margin-top: 10px; font-size: 13px; color: var(--osp-muted);\n        }\n        .osp-spinner {\n            display: inline-block; width: 18px; height: 18px;\n            border: 3px solid rgba(255,255,255,0.25);\n            border-top-color: var(--osp-primary);\n            border-radius: 50%; animation: ospSpin .8s linear infinite;\n        }\n        @keyframes ospSpin { to { transform: rotate(360deg); } }\n    <\/style>\n    \n\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"pagelayer_contact_templates":[],"_pagelayer_content":"","footnotes":""},"class_list":["post-2438","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/bornfree.life\/learn\/wp-json\/wp\/v2\/pages\/2438","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bornfree.life\/learn\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bornfree.life\/learn\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bornfree.life\/learn\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/bornfree.life\/learn\/wp-json\/wp\/v2\/comments?post=2438"}],"version-history":[{"count":15,"href":"https:\/\/bornfree.life\/learn\/wp-json\/wp\/v2\/pages\/2438\/revisions"}],"predecessor-version":[{"id":4702,"href":"https:\/\/bornfree.life\/learn\/wp-json\/wp\/v2\/pages\/2438\/revisions\/4702"}],"wp:attachment":[{"href":"https:\/\/bornfree.life\/learn\/wp-json\/wp\/v2\/media?parent=2438"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}