Accurate OCR, Wrong Answer: Evaluating Medical Tables
All 33 checked table rows had exact cells, but a live answer used the wrong device column despite good page-level OCR and retrieval scores
Technically reviewed by Victor Sineglazov, D.Sc.
All 33 checked table rows had exact cell values. Later, the answer model selected a value from the wrong device column. We had improved page reading without solving the association the question actually required.
The results came from separate stages of our October 2026 work on scanned sources for a professional learning platform. The first was an OCR spike on public FDA documents. The second exercised retrieval and answers through the backend. Keeping those stages separate explains how a strong extraction result could coexist with the wrong answer.
Forty readings of ten selected pages
On October 9, we selected ten pages from ten different FDA 510(k) summaries: five text pages, four containing tables and one form. We rendered them into image-only PDFs, retaining the original text layers as references. The two versions were a clean scan and a synthetically degraded scan.
The degraded version added small rotations, Gaussian noise and stronger JPEG compression. Each version was read at two long-edge sizes, 1568 and 2048 pixels. Ten pages across four configurations produced 40 page readings. They were selected engineering fixtures, not 40 independent document collections.
| Variant | Long edge | CER | WER | Sequential CER |
|---|---|---|---|---|
| Clean | 1568 px | 0.32% | 0.88% | 3.83% |
| Clean | 2048 px | 0.22% | 0.70% | 3.85% |
| Degraded | 1568 px | 0.41% | 1.07% | 3.74% |
| Degraded | 2048 px | 0.22% | 0.70% | 3.85% |
These CER and WER values used an order-insensitive comparison after normalization. They cannot be substituted for a conventional sequential transcription score. The sequential CER column preserves how differently the same outputs scored when order counted.
The text layer was a useful, imperfect reference
The PDF text layer did not always expose table cells and headers in printed reading order. A sequential comparison would penalize correct extraction presented in a different order. We therefore reported the order-insensitive score while retaining the sequential result. That choice also removed information. A scorer that ignores order can miss a broken relationship between a label and its value. We needed a separate inspection of table cells and the answers built from them.
Some apparent errors came from the reference or its normalization. Bullets inside table cells survived one side of the comparison. A superscript could merge with the following word in the text layer. On the form, checkbox state was visible on the page but absent from the reference text. A character score could neither reward nor penalize that state correctly.
At 1568 pixels on the clean variant, all 33 inspected rows had exact cell contents. All four table pages were represented as Markdown tables. Those checks support a narrow extraction result on that configuration. They do not establish correct interpretation of every device comparison.
Why we kept the smaller image
The recorded clean CER fell from 0.32% to 0.22% at the larger size. The difference was 0.10 percentage points, associated with 22 characters in two small footer lines on one page. Each configuration had one reading per page, so that difference did not establish a stable repeated-run advantage.
Warm-call medians were close: 20.6 seconds at 1568 pixels and 19.9 seconds at 2048. The larger images increased the recorded prompt size from 2125 to 3399 tokens and the largest request from 2.4 to 3.9 MB. Our decision rule selected the smaller size. It was a choice under that small experiment's constraints, not a recommendation for every scanner or document.
The right page still gave the wrong association
On October 10, an isolated live backend read the ten-page scan. Its CER was 0.22% under the spike's normalization. For all ten selected questions, the expected page ranked first among the six retrieved sources, and every answer cited that page.
Two answers exposed a weakness beyond page reading. One omitted a named component. Another used a display value belonging to the predicate device in a comparison table. The page continued a table whose column headings appeared on the previous page.
Finding and citing the continuation page did not supply enough context to bind the value to the requested device.
Readers can inspect the public source, FDA summary K233996, for that layout: the subject-versus-predicate headings start on one page and the comparison continues on the next. It is the layout relationship that matters here; this article does not advise on the device's use.
| Visible fragment | Lost context | Possible answer error |
|---|---|---|
| Display: 8 inches | 12 inches | Which column names the subject device and which names the predicate. | Selecting an exact value from the wrong column. |
Every visible numeral can be transcribed correctly in that example while the answer remains wrong. Improving character accuracy alone would leave the missing header unresolved.
Evaluate the relationship the answer needs
For a next iteration, we would test whether a table continuation carries its column identity into the retrieval context. Candidate approaches include including the preceding header or preserving an explicit table structure. The development results described here do not demonstrate that either approach has already fixed the answer.
The acceptance record should ask which device, which property, which value and which unit the answer selected. It should preserve the source cells and their header context. We would also keep omission checks, because citing the correct page did not prevent the missing component in the other answer.
This complements the runtime citation case. There the marker resolved to text that did not support the recommendation. Here the correct page held the relevant comparison, but the answer selected the wrong association. Both failures survive a test that asks only whether the citation points to a retrieved page.
Evidence: the October 9 scan spike and October 10 isolated backend run, summarized from our development records. The 33-row inspection applies to clean scans at 1568 pixels. CER values retain the recorded normalization; the full scorer and raw run outputs are not released here. The short display example is fictional, while K233996 is linked as the public layout source.
FAQ
Quick answers to common questions about custom software development, pricing, process and technology.
Type to filter questions and answers. Use Topic to narrow the list.
Showing all 14
No matches
Try a different keyword, change the topic or clear filters
-
How long have you been in business?
Pharos Production has been in business since 2013, with over 13 years of experience in custom software development. During this time, we have delivered over 110 applications for 200+ clients across 28 industries, including FinTech, healthcare, crypto and e-commerce. We are rated 5/5 on Clutch based on 107 verified reviews (2026).
-
What services do you provide?
Pharos Production provides six core service categories: AI Development (LLM applications, AI agents, machine learning and computer vision), Blockchain and Web3 (smart contracts, DeFi, tokenization on Ethereum, Solana, TON and other chains), FinTech Development (payment platforms, digital banking, KYC and AML integration), Software Development (mobile apps, web platforms, database design, UI/UX), Security and QA (code audits, penetration testing, smart contract audits, manual and automated testing) and Consulting (architecture design, MVP validation, startup consulting).
-
Where is Pharos Production located?
Pharos Production is headquartered in Las Vegas, Nevada, USA (5348 Vegas Dr, Las Vegas, NV 89108), with an engineering office in Kyiv, Ukraine (44-B Eugene Konovalets Str. Suite 201, Kyiv 01133). We work with clients worldwide and provide remote collaboration across all time zones. Visit our contact page for directions and scheduling options.
-
How big is your team?
Pharos Production has a team of 90+ engineers, including software developers, blockchain specialists, QA engineers, DevOps experts, UI/UX designers, project managers and solution architects. Our founder, Dr. Dmytro Nasyrov, holds a PhD in Artificial Intelligence and leads the technical direction of all projects.
-
What types of customers do you serve?
We serve a wide range of clients, from startups and product companies to mid-sized enterprises and large institutions. Our clients include crypto exchanges, FinTech providers (like Pleenk), healthcare organizations, sportsbook operators (like Pro Gambling), e-commerce platforms and SaaS companies. Pharos Production has worked with 200+ clients across 28 industries since 2013, adapting engagement models to match each client's stage, whether it is MVP validation for a startup or enterprise-scale development for an established business.
-
How is a custom software development company different from an agency?
A custom software development company like Pharos Production assigns one dedicated engineering team that owns your product across multiple release cycles, instead of handing it off once a contract ends. Agencies more often rotate staff between clients and optimize for fast delivery over long-term product ownership.
Pharos Production keeps the same team on your codebase through 2-week sprints, so there is no re-onboarding cost each time you request a new feature.
-
How much does custom software development cost?
Custom software development costs vary based on project scope and complexity. At Pharos Production, typical project ranges are: MVP development ($10,000-$25,000), suitable for startups validating a product idea; full-fledged production ($25,000-$50,000), for established businesses scaling a proven concept; and full-cycle development ($50,000-$80,000+), for complex enterprise-grade systems. These ranges include architecture design, development, QA testing and deployment. Hourly rates range from $50 to $99 depending on role and seniority. Final pricing depends on technology stack, number of integrations and engagement model (staff augmentation, dedicated team or project outsourcing).
-
How long does it take to develop a custom software application?
Development timelines depend on scope and complexity. At Pharos Production, a typical MVP takes 2-4 months, a production-ready application takes 4-8 months and a complex enterprise system can take 8-12+ months. We use an agile methodology with 2-week sprints, delivering working increments after each sprint. Every sprint includes a retrospective, progress report and planning session for the next iteration. This approach ensures transparency and allows businesses to launch faster by prioritizing high-impact features first. Get a timeline estimate for your project.
-
What industries does Pharos Production serve?
Pharos Production serves 28 industries: FinTech, MiCA Compliance, Banking, Insurance, Crypto, Healthcare, Fitness, E-Commerce, Food & Restaurant, On-Demand, Manufacturing, Automotive, Energy, Oil & Gas, Supply Chain, Construction, Real Estate, Gaming, Streaming, Media, Telecom, Education, Aviation, Travel, Logistics, Marketing, Agriculture and Recommender Systems. Our deepest expertise is in FinTech, blockchain and healthcare, where we have delivered compliance-ready platforms (HIPAA, PCI DSS, GDPR) and high-load systems handling thousands of concurrent users. For the latest industry insights, read our guides on FinTech trends in 2026 and the Web3 technology stack.
-
Why hire a software development company instead of building in-house?
Hiring a software development company offers faster time-to-market, lower upfront costs and access to specialized expertise without long-term employment commitments. According to Deloitte's 2024 Global Outsourcing Survey, 57% of companies outsource software development to access skills they cannot hire internally.
Factor In-house team Software development company Time to assemble 3-6 months (recruiting + onboarding) 1-2 weeks Upfront cost High (salaries, benefits, equipment) Lower (project-based pricing) Specialized expertise Limited to who you can hire locally Access to 90+ engineers across blockchain, AI, FinTech Scalability Slow (each new hire takes months) Fast (scale up or down per sprint) Long-term commitment Full-time employment contracts Flexible engagement models Risk High if key engineers leave Company ensures continuity and knowledge transfer For businesses that need blockchain, AI or high-load architecture expertise, outsourcing to a specialized firm like Pharos Production reduces risk and accelerates delivery.
-
What projects does Pharos Production not take on?
Pharos Production focuses on mid-to-large custom software projects with budgets starting at $10,000. We do not take on template-based websites, WordPress theme customization or short-term contracts under one month. We also do not provide non-technical staffing (marketing, sales or design-only roles). Our strongest fit is blockchain, FinTech and healthcare projects where security, compliance and high-load architecture are critical. For smaller projects or MVPs under $10,000, we recommend exploring freelance platforms or no-code tools as a more cost-effective starting point.
-
Why does Pharos Production use agile methodology?
We use agile with 2-week sprints because it reduces the risk of building features that miss the mark. Each sprint ends with a working demo, a retrospective and a plan for the next iteration.
This means clients see progress every 14 days and can adjust priorities based on real results, not assumptions. We chose this approach after years of experience showing that rigid, fixed-scope contracts lead to scope creep, missed deadlines and products that do not match market needs by launch day.
-
When should you NOT hire a custom software development company?
Custom development is not the right choice in every situation. You should not hire a custom software company if: your problem is fully solved by an existing SaaS product (e.g. Shopify for e-commerce, Salesforce for CRM); your budget is under $10,000 and timeline is under 4 weeks; you need a simple landing page or marketing website (WordPress or Webflow is faster and cheaper); or you are still validating the idea and have not spoken to potential users yet.
In these cases, off-the-shelf tools or no-code platforms offer better ROI. Custom development makes sense when you need unique workflows, regulatory compliance, high-load architecture or competitive differentiation that packaged software cannot provide.
-
What kind of projects has Pharos Production delivered?
Here are three anonymized examples from our recent delivery history:
FinTech startup - payment platform (MVP)
Scope: mobile app + backend API with bank-grade encryption. Team: 4 engineers, 1 QA. Timeline: 10 weeks. Budget: $38,000. Result: launched on schedule, processed $2M+ in transactions within the first quarter.Healthcare provider - patient portal (Full product)
Scope: HIPAA-aligned web platform with EHR integration, appointment scheduling and telemedicine. Team: 6 engineers, 1 DevOps, 2 QA. Timeline: 6 months. Budget: $120,000. Result: 15,000+ active patients, zero compliance violations in two annual audits.Crypto exchange - trading engine (Complex)
Scope: high-load matching engine handling 50,000+ orders per second, multi-chain wallet infrastructure on Ethereum and Solana. Team: 8 engineers, 2 QA, 1 security auditor. Timeline: 11 months. Budget: $340,000. Result: 99.97% uptime, passed three independent security audits.See more projects: NoMoreBets, Pulse, Sagas, Gambit Stream and Pleenk. For the full portfolio, visit our case studies. Learn more about the technology behind these projects in our guide to stablecoins and crypto infrastructure.
Dmytro Ihnatov is the Lead Backend Developer at Pharos Production. He documents backend architecture and research experiments from the team's work on a professional learning platform for aesthetic medicine.