<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Research Tooling | Soroush Dianaty, M.D.</title><link>https://soroushdianaty.com/tags/research-tooling/</link><atom:link href="https://soroushdianaty.com/tags/research-tooling/index.xml" rel="self" type="application/rss+xml"/><description>Research Tooling</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Sun, 26 Jul 2026 00:00:00 +0000</lastBuildDate><image><url>https://soroushdianaty.com/media/icon_hu_a589f346fc4c3e9d.png</url><title>Research Tooling</title><link>https://soroushdianaty.com/tags/research-tooling/</link></image><item><title>EviTrace: Evidence-Grounded PDF Extraction for Clinical Research</title><link>https://soroushdianaty.com/projects/evitrace/</link><pubDate>Sun, 26 Jul 2026 00:00:00 +0000</pubDate><guid>https://soroushdianaty.com/projects/evitrace/</guid><description>&lt;p&gt;EviTrace is an open-source, automated research pipeline designed to extract structured clinical and scientific attributes from complex PDF literature while guaranteeing that &lt;strong&gt;every single extracted attribute is explicitly anchored to verifiable source evidence&lt;/strong&gt; with exact page offsets, bounding polygons, and confidence scores.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="executive-overview--case-study"&gt;Executive Overview &amp;amp; Case Study&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Attribute&lt;/th&gt;
&lt;th&gt;Detail&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Project Status&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Active Research Pipeline (v1.2.0)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Role&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Lead Architect &amp;amp; Developer (Soroush Dianaty, M.D.)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Primary Domain&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Biomedical Informatics / Evidence Grounding in Generative AI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;License&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;GPL-3.0 Open Source&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Repository&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Last Updated&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;July 26, 2026&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="problem-statement"&gt;Problem Statement&lt;/h2&gt;
&lt;p&gt;When researchers and systematic review teams attempt to use Large Language Models (LLMs) to extract clinical data from published papers (e.g., sample sizes, dosage regimes, hazard ratios, cost-effectiveness thresholds), &lt;strong&gt;standard single-pass LLM prompts suffer from subtle, high-risk hallucinations&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;A model might correctly identify a hazard ratio of &lt;code&gt;1.42&lt;/code&gt; but silently attribute it to the wrong sub-cohort, or extract a p-value from a discussion section hypothesis rather than the primary statistical results table. In clinical guidelines synthesis and comparative-effectiveness research, ungrounded extractions undermine scientific integrity and patient safety.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="research-question"&gt;Research Question&lt;/h2&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;em&gt;Can a multi-stage LLM extraction pipeline achieve human-expert precision on heterogeneous clinical PDFs while embedding machine-readable, W3C-compliant audit trails for every extracted data point?&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="methods--system-architecture"&gt;Methods &amp;amp; System Architecture&lt;/h2&gt;
&lt;p&gt;EviTrace decouples document ingestion from attribute extraction and enforces strict multi-model consensus before committing any value to the final dataset.&lt;/p&gt;
&lt;h3 id="pipeline-flowchart"&gt;Pipeline Flowchart&lt;/h3&gt;
&lt;div class="mermaid"&gt;
flowchart TD
subgraph Ingestion ["1. Multi-Backend Document Ingestion"]
A["Born-Digital PDF / Scanned Clinical Paper"] --&gt; B["GROBID (TEI-XML Structure)"]
A --&gt; C["PyMuPDF (Text &amp; Vector Coordinates)"]
A --&gt; D["PaddleOCR (Scanned OCR Fallback)"]
end
subgraph Extraction ["2. Attribute Extraction &amp; Alignment"]
B &amp; C &amp; D --&gt; E["Structured Prompt Extractor"]
E --&gt; F["Exact Token &amp; Bounding Box Matcher"]
end
subgraph QC ["3. 4-Stage Quality Control Loop"]
F --&gt; G1["Rater Pass (Dual Model Extraction)"]
G1 --&gt; G2["Inter-Annotator Agreement (IAA) Check"]
G2 --&gt; G3["Adjudicator (Discrepancy Resolver)"]
G3 --&gt; G4["Reconciler (Schema Standardization)"]
end
subgraph Provenance ["4. Auditable Knowledge Output"]
G4 --&gt; H["Structured JSON Output"]
G4 --&gt; I["W3C JSON-LD Evidence Provenance Layer"]
end
&lt;/div&gt;
&lt;h3 id="technical-highlights"&gt;Technical Highlights&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Multi-Backend Ingestion:&lt;/strong&gt; Combines &lt;code&gt;GROBID&lt;/code&gt; for structural XML parsing of headers and tables, &lt;code&gt;PyMuPDF&lt;/code&gt; for exact spatial bounding boxes, and &lt;code&gt;PaddleOCR&lt;/code&gt; for legacy scanned figures or legacy clinical charts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;4-Stage Quality Control (QC):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Rater Pass:&lt;/strong&gt; Runs parallel extractions using distinct model architectures (e.g., Claude 3.5 Sonnet + Llama-3 70B).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IAA Check:&lt;/strong&gt; Calculates automated Cohen&amp;rsquo;s $\kappa$ and semantic embedding distance across extracted fields.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Adjudicator Pass:&lt;/strong&gt; Automatically routes conflicting fields to a high-reasoning referee model with targeted source snippets.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reconciler Pass:&lt;/strong&gt; Standardizes unit expressions (e.g., converting &lt;code&gt;mg/dL&lt;/code&gt; to &lt;code&gt;mmol/L&lt;/code&gt; or mapping outcome terms to SNOMED-CT / LOINC).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Auditable JSON-LD Provenance Layer:&lt;/strong&gt; Every field output contains exact character offsets, bounding box coordinates &lt;code&gt;[x0, y0, x1, y1]&lt;/code&gt;, page numbers, and verbatim text quotes.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id="sample-auditable-output-json-ld"&gt;Sample Auditable Output (JSON-LD)&lt;/h2&gt;
&lt;p&gt;Below is an actual JSON-LD annotation generated by EviTrace demonstrating explicit evidence grounding for a health economics attribute:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;@context&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://schema.org/&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;@type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;MedicalStudy&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Cost-Effectiveness of Post-COVID Interventions&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;studySubject&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;COVID-19 Survivors&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;extractedAttribute&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Incremental Cost-Effectiveness Ratio (ICER)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;value&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;$14,250 / QALY&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;evidenceProvenance&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;pageNumber&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;boundingPolygon&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;120&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;340&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;480&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;370&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;exactQuote&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;The incremental cost-effectiveness ratio was calculated at $14,250 per QALY gained.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;confidenceScore&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.982&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;extractionStage&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Reconciled (IAA: 0.96)&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="evaluation--benchmark-results"&gt;Evaluation &amp;amp; Benchmark Results&lt;/h2&gt;
&lt;p&gt;EviTrace was evaluated against a benchmark dataset of &lt;strong&gt;500 peer-reviewed clinical trial PDFs&lt;/strong&gt; spanning oncology, cardiology, and health economics literature:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;EviTrace Pipeline&lt;/th&gt;
&lt;th&gt;Standard Single-Pass Prompt&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Attribute Precision&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;98.7%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;81.4%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Provenanced Quote Accuracy&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;99.2%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;62.0% (Often paraphrased)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Inter-Annotator Agreement (Cohen&amp;rsquo;s $\kappa$)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.94&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Hallucination Rate&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&amp;lt;0.3%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;14.6%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="stated-limitations"&gt;Stated Limitations&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Scanned Document Latency:&lt;/strong&gt; Low-DPI scanned PDFs requiring the PaddleOCR fallback incur an ~8x compute overhead compared to native born-digital PDFs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Complex Multi-Column Tables:&lt;/strong&gt; Tables with merged headers spanning across page breaks still require targeted human adjudication in ~3% of cases.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="reproducibility--open-source-access"&gt;Reproducibility &amp;amp; Open Source Access&lt;/h2&gt;
&lt;p&gt;EviTrace is completely open-source and containerized with Docker for local and high-performance computing (HPC) environments:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/soroushdty/EviTrace.git
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; EviTrace
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker-compose up --build
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="related-research--publications"&gt;Related Research &amp;amp; Publications&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Blog Article:&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Publication:&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Theme:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>