Scanned Document OCR

Read the text of a scanned PDF or a set of page images, up to 50 pages per call, with per-page confidence, a text file and an optional searchable PDF.

document-ocr

Example

Example answer
{
  "pages": [
    {
      "text": "Mot. 1975:36 17\n\nNr 36\n\nav fru Berglund m. fl.\nom slopande av förbudet mot användning av kvinnlig arbetskraft i\n\nunderjordsarbete.\n\nI 34 § arbetarskyddslagen (1949:1) stadgas följande:\nKvinna ma icke användas til arbete under jord i gruva eller stenbrott.\n\nVad i första stycket stadgas avser icke arbetstagare i överordnad ställning,\n\nsom ej utför kroppsarbete.\nArbetarskyddsstyrelsen äger medgiva, att kvinna utan hinder av bestäm-\nmelsen i första stycket må användas till arbete under jord.\n\nMöjligheten till dispens (34 § tredje stycket) från förbudet för kvinnligt\nunderjordsarbete i gruvor och stenbrott infördes först genom lagändring\nden | juli 1962 och avsåg då enbart sjukvårdsarbete, annat socialt arbete\neller tillfälligt arbete som inte var att betrakta som kroppsarbete. Sin nu-\nvarande lydelse fick paragrafen den I juli 1968, då arbetarskyddsstyrelsen\ngavs en generell möjlighet att ge dispens för underjordsarbete, som kunde\nanses lämpligt för kvinnor. På orter där gruvindustrin är dominerande bi-\ndrager ovanstående lagparagraf till att arbetsmarknaden även i framtiden\nuppdelas i traditionellt manliga och kvinnliga yrken och arbetsuppgifter.\nDen är ett hinder för ökad jämställdhet mellan män och kvinnor på ar-\nbetsmarknaden. Principen om allas rätt till arbete bör gälla även arbete under\njord. I bedömningen om lämplighet för visst arbete är det den enskilde\nindividens förutsättningar som skall vara avgörande ej kön.\n\nMed en utökad företagshälsovård undanröjes riskerna att personer hamnar\npå arbetsplatser där arbetskraven är större än individens arbetskapacitet.\n\nGenom att i större utsträckning använda ”tekniken” till att anpassa ar-\nbetsplatserna efter individerna, elimineras många arbetsmiljöproblem både\növer och under jord. Det måste vara en självklar målsättning att arbetsmiljön\ni gruvorna liksom på andra arbetsplatser från arbetarskyddssynpunkt skall\nvara tillfredsställande, oberoende av om det är män eller kvinnor som arbetar\ndär. Arbetsmiljöer som anses olämpliga för kvinnor kan inte heller anses\nlämpliga för män.\n\nDispensförfarande är otiilfredsstillande. Det ger inte rättvisa möjligheter\natt söka arbete efter fallenhet och förmåga. Även om arbetarskyddsstyrelsen\nhar generella möjligheter att ge dispens, är det enklare för arbetsgivaren\natt anställa en man och komma ifrån dispensförfarandet. Beviljade dispenser\ngäller oftast arbeten som bedömes som mindre kvalificerade och som därför\nockså är lågavlönade, 1. ex. städning.\n\nDet är angeläget att kvinnorna på orter med en dominerande gruvindustri",
      "status": "ok",
      "word_count": 363,
      "page_number": 1,
      "mean_confidence": 92.9
    }
  ],
  "engine": "tesseract 5.3.0",
  "complete": false,
  "languages": [
    "swe",
    "eng"
  ],
  "last_page": 1,
  "first_page": 1,
  "word_count": 363,
  "total_pages": 2,
  "output_files": [],
  "pages_failed": 0,
  "mean_confidence": 92.9,
  "next_first_page": 2,
  "pages_processed": 1,
  "low_confidence_pages": [],
  "stopped_early_reason": null,
  "searchable_pdf_omitted_reason": null
}

Inputs

FieldTypeRequiredWhat it is
urlstringNoURL of a PDF or of one image (PNG, JPEG, WebP, or TIFF, multi-page TIFF included). Up to 8 MB.
base64stringNoThe PDF or image itself, base64-encoded. The request body limit of 1 MB applies, so use url for larger files.
languagesstringNoUp to three of eng, swe, dan, nor, fin, deu, fra, spa, ita, nld, joined with + (for example deu+eng). Default eng+swe.
max_pagesintegerNoPages to read in this call, 1 to 50. Default 50.
first_pageintegerNoFirst page to read (1-based). Default 1. To read a long document, call again with next_first_page from the previous result.
image_urlsarrayNoOne image URL per page, in page order (up to 500). Only the images inside the page window are fetched; at most 4 MB each and 8 MB in total per call.
output_fileone of text, pdf, both, noneNoFiles returned with the job: text (default, one .txt with every page), pdf (a searchable PDF, image plus invisible text layer, split into parts of up to 10 MB), both, or none.

Output fields

How reliably each field appears in a successful answer.

FieldTypeAppears
pagesarrayAlways (present in every successful answer)
enginestringAlways (present in every successful answer)
completebooleanAlways (present in every successful answer)
languagesarrayAlways (present in every successful answer)
last_pageintegerAlways (present in every successful answer)
first_pageintegerAlways (present in every successful answer)
word_countintegerAlways (present in every successful answer)
total_pagesintegerAlways (present in every successful answer)
output_filesarrayAlways (present in every successful answer)
pages_failedintegerAlways (present in every successful answer)
mean_confidencenumberUsually (present for most inputs)
next_first_pageintegerUsually (present for most inputs)
pages_processedintegerAlways (present in every successful answer)
low_confidence_pagesarrayAlways (present in every successful answer)
stopped_early_reasonstringSometimes (present only for some inputs)
searchable_pdf_omitted_reasonstringSometimes (present only for some inputs)

How to call it

The same tool through each route. MCP clients reach it through Strale’s server at https://api.strale.io/mcp; the call below is what the agent sends.

# Needs an API key. max_price_cents caps what this call may cost.
curl -X POST https://api.strale.io/v1/do \
  -H "Authorization: Bearer $STRALE_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "capability_slug": "document-ocr",
    "inputs": {
      "url": "https://data.riksdagen.se/fil/F31689BF-1E58-4A1F-A577-0B29A22B363B",
      "languages": "swe+eng",
      "output_file": "none"
    },
    "max_price_cents": 10
  }'

Limitations

  • Printed text only

    Tesseract reads printed and typed text. It does not read handwriting, and stamps, signatures, faded print, tables and multi-column layouts lower accuracy. Pages under 70 mean confidence are listed in low_confidence_pages.

    What to do instead: Send the pages listed in low_confidence_pages to image-to-text, which uses a vision model.

  • Accuracy measured for Swedish and English

    Measured on Swedish and English scans (about 0.07% character error on scan-like pages, 0.5% on poor scans, and mean confidence 93 on the 1975 Riksdag scan in the test). The other eight languages use the standard Tesseract models and were not measured here.

  • 50 pages per call

    Each call reads at most 50 pages and costs €0.10 however few pages it reads, so a one-page document costs €0.10. Longer documents are read in windows with first_page; the result gives next_first_page until complete is true.

    What to do instead: For a single photo or screenshot, image-to-text (€0.05) is cheaper.

  • Asynchronous, with a time limit

    The call returns a job to poll. A job stops starting new pages about three and a half minutes after the call and returns what it read, with stopped_early_reason time_budget and next_first_page set. One document is read at a time; a call is refused, uncharged, when another document is already waiting or it waited too long to start.

  • Size limits

    A PDF or image by URL may be up to 8 MB, a base64 upload is bounded by the 1 MB request body, and an image set may total 8 MB per call. PDFs that need a password to open are refused. The searchable PDF comes in parts of at most 10 MB and 25 MB per job; pages beyond that are left out of the PDF and named in searchable_pdf_omitted_reason, and a call asking only for a PDF that gets none fails uncharged.

  • No layout or structure

    Output is plain text per page in reading order. Tables, form fields, fonts and positions are not returned; use invoice-extract or pdf-extract for structured fields.

Related tools