ParseForge Scrapers

Google Lens OCR Scraper

parseforge/google-lens-scraper

AIDeveloper toolsAutomation

Extract text from any image with Google Lens OCR. Get full text, detected language, line and word bounding boxes in pixels. Export to CSV, Excel, JSON or XML.

Run this scraper See the API call
Total runs
7
Bookmarked
0
Last modified
48 hours ago

This scraper was last updated on .

What does the Google Lens OCR Scraper return?

ParseForge Banner

๐Ÿ” Google Lens OCR Scraper

๐Ÿš€ Turn any image into text in seconds. Google Lens read 12 lines and 95 words from a test sheet in 815 ms, with a pixel box for every word.

The Google Lens OCR Scraper sends your image URLs to the same text-recognition service that powers Google Lens in Chrome and returns everything it sees: the full text, the detected language, and each paragraph, line and word with its position, size and rotation in pixels of the original image. No browser is rendered and no proxy is needed, so a batch of 5 images finishes in about 3 seconds.

Every run delivers one row per image with 15 fields. The service reads printed and stylized text in any script it knows (Latin, Chinese, Korean, Cyrillic, Arabic and more), keeps reading direction and line rotation, and returns LaTeX for formulas when it recognizes one.

๐ŸŽฏ Target Audience ๐Ÿ’ก Primary Use Cases
Developers building OCR pipelines Extract text from screenshots, scans, receipts and product photos
Data teams and analysts Index image archives and social media screenshots by their text
E-commerce and marketplace operators Read labels, packaging and price tags at scale
Researchers and archivists Digitize signs, posters and historical documents with coordinates

๐Ÿ“‹ What the Google Lens OCR Scraper does

Give it a list of public image URLs (or base64 data URLs) and it returns, for each image:

  • ๐Ÿ“ The full text, paragraphs separated by blank lines
  • ๐ŸŒ The detected language as an ISO code and a readable name
  • ๐Ÿ“ Every line with x, y, width, height and rotation in degrees
  • ๐Ÿ”ค Every word inside each line with its own box (switch off when you only need lines)
  • ยถ Every paragraph with its writing direction and box
  • ๐Ÿ”ข Line, word and character counts plus the original image size

๐Ÿ’ก Why it matters: most OCR tools give you text or boxes, rarely both, and almost never rotation. With word-level coordinates you can highlight matches on the image, redact fields, crop regions or feed structured layout into an LLM. Failed images are reported as error rows and are never charged.

๐ŸŽฌ Full Demo (๐Ÿšง Coming soon)

๐Ÿ“Š Output

Field Description
๐Ÿ–ผ imageUrl The image that was read
๐Ÿ“ text Full recognized text, paragraphs separated by blank lines
๐ŸŒ language Detected language code, e.g. en, fr, zh-Hans
๐Ÿ—ฃ languageName Readable language name, e.g. Simplified Chinese
๐Ÿ”ค hasText Yes or No
ยถ paragraphCount Number of paragraphs found
๐Ÿ“ lineCount Number of lines found
๐Ÿ”ข wordCount Number of words found
๐Ÿ”  charCount Characters without whitespace
โ†” imageWidth Original image width in pixels
โ†• imageHeight Original image height in pixels
ยถ paragraphs Array of { index, text, writingDirection, lineCount, x, y, width, height, rotation }
๐Ÿ“ lines Array of { paragraph, text, x, y, width, height, rotation, wordCount, words[] }
๐Ÿ•’ scrapedAt ISO timestamp of the read
โŒ error null on success, otherwise the reason the image failed

Three real records from a run (word arrays shortened):

{
  "imageUrl": "https://raw.githubusercontent.com/JaidedAI/EasyOCR/master/examples/english.png",
  "text": "Reduce your risk of coronavirus infection:\n\nClean hands with soap and water\nor alcohol-based hand rub\n\nCover nose and mouth when coughing and\nsneezing with tissue or flexed elbow",
  "language": "en",
  "languageName": "English",
  "hasText": "Yes",
  "paragraphCount": 7,
  "lineCount": 12,
  "wordCount": 61,
  "charCount": 294,
  "imageWidth": 905,
  "imageHeight": 480,
  "paragraphs": [
    { "index": 1, "text": "Reduce your risk of coronavirus infection:", "writingDirection": "Left to right", "lineCount": 1, "x": 235, "y": 37, "width": 431, "height": 24, "rotation": 0 }
  ],
  "lines": [
    {
      "paragraph": 1,
      "text": "Reduce your risk of coronavirus infection:",
      "x": 235, "y": 37, "width": 431, "height": 24, "rotation": 0,
      "wordCount": 7,
      "words": [
        { "text": "Reduce", "x": 235, "y": 37, "width": 74, "height": 24, "rotation": 0 },
        { "text": "your", "x": 314, "y": 37, "width": 49, "height": 23, "rotation": 0 },
        { "text": "risk", "x": 370, "y": 37, "width": 36, "height": 23, "rotation": 0 }
      ]
    }
  ],
  "scrapedAt": "2026-09-02T22:04:55.648Z",
  "error": null
}
{
  "imageUrl": "https://raw.githubusercontent.com/JaidedAI/EasyOCR/master/examples/chinese.jpg",
  "text": "่ฅฟ\n\n315\n\nๆ„šๅ›ญ่ทฏ\n\nไธœ\n\n309\n\nW\n\nYuyuan Rd.\n\nE",
  "language": "zh-Hans",
  "languageName": "Simplified Chinese",
  "hasText": "Yes",
  "paragraphCount": 8,
  "lineCount": 8,
  "wordCount": 11,
  "charCount": 22,
  "imageWidth": 640,
  "imageHeight": 339,
  "lines": [
    { "paragraph": 3, "text": "ๆ„šๅ›ญ่ทฏ", "x": 191, "y": 85, "width": 265, "height": 67, "rotation": 0, "wordCount": 3 }
  ],
  "scrapedAt": "2026-09-02T22:04:54.370Z",
  "error": null
}
{
  "imageUrl": "https://raw.githubusercontent.com/JaidedAI/EasyOCR/master/examples/french.jpg",
  "text": "โ†\n\nMairie du lor\n\nPalais du LOUVRE\n\nLES ARTS Dร‰CORATIFS\n\nMusรฉe du LOUVRE",
  "language": "fr",
  "languageName": "French",
  "hasText": "Yes",
  "paragraphCount": 6,
  "lineCount": 7,
  "wordCount": 18,
  "charCount": 77,
  "imageWidth": 692,
  "imageHeight": 1024,
  "paragraphs": [
    { "index": 1, "text": "โ†", "writingDirection": "Top to bottom", "lineCount": 1, "x": 71, "y": 247, "width": 29, "height": 35, "rotation": -90.6 },
    { "index": 2, "text": "Mairie du lor", "writingDirection": "Left to right", "lineCount": 1, "x": 217, "y": 228, "width": 150, "height": 29, "rotation": -6.3 }
  ],
  "scrapedAt": "2026-09-02T22:04:55.430Z",
  "error": null
}

โœจ Why choose this Actor

  • ๐Ÿงญ Word-level boxes with rotation. Every word carries x, y, width, height and rotation in degrees, mapped back to the original image size.
  • ๐ŸŒ Any script, auto-detected. English, French, Portuguese, Simplified Chinese and Korean came back correctly labeled in the verification run, with no language hint required.
  • โšก No browser, no proxy. The Actor talks to the Lens recognition API directly, so a typical image takes 0.8 to 2.5 seconds and a run costs almost nothing in compute.
  • ๐Ÿงฑ Robust image fetching. Images are downloaded by the Actor with browser headers and sent as bytes, so hosts that refuse Google's own fetcher still work. Base64 data:image inputs are accepted.
  • ๐Ÿ’ธ No start fee and no charge for failures. You pay per image successfully read, nothing per run.

๐Ÿ“ˆ How it compares to alternatives

Feature Google Lens OCR Scraper Typical Lens OCR actors Cloud vision APIs
Word boxes with rotation โœ… โš ๏ธ Lines or words, rarely rotation โœ…
Paragraph writing direction โœ… โŒ โš ๏ธ
Language name in plain English โœ… โŒ โŒ
Base64 input โœ… โš ๏ธ โœ…
Start fee per run โŒ None $0.002 to $0.01 n/a
Visual matches / reverse image search โŒ Text only โš ๏ธ Some โŒ

๐Ÿš€ How to use

  1. Create a free Apify account and get $5 of monthly credit.
  2. Open the Google Lens OCR Scraper and paste your image URLs into Image URLs, one per line.
  3. Set Max Items if you want to read only the first N images.
  4. Leave Include word boxes on for per-word coordinates, or switch it off for smaller rows.
  5. Click Start. When the run finishes, open the Dataset tab and export to CSV, Excel, JSON or XML.

Example input:

{
  "imageUrls": [
    "https://raw.githubusercontent.com/tesseract-ocr/tessdoc/main/images/eurotext.png",
    "https://raw.githubusercontent.com/JaidedAI/EasyOCR/master/examples/english.png"
  ],
  "maxItems": 10,
  "includeWords": true
}

๐Ÿ’ผ Business use cases

๐Ÿงพ Receipts, invoices and forms

Read scanned documents and use the line coordinates to map each value to its label, then push the structured result into your accounting or CRM system.

๐Ÿ›’ Product and shelf photos

Extract brand names, ingredient lists and price tags from marketplace listings or store photos, and compare them against your catalog.

๐Ÿ“ฑ Social media and ad monitoring

Screenshots of posts, stories and ads become searchable text. Track competitor claims, promo codes and disclaimers across thousands of images.

๐Ÿ—‚ Archive digitization

Convert posters, signs and historical scans into text with positions, keep the writing direction and rotation, and build a searchable index with highlights.

๐Ÿ”Œ Automating Google Lens OCR Scraper

  • Make / Zapier: trigger a run whenever a new image lands in Google Drive, Dropbox or an S3 bucket and write the text back to a sheet.
  • Slack: post the recognized text of every image shared in a channel.
  • Airbyte: sync the dataset into your warehouse on a schedule.
  • GitHub Actions: run OCR on images committed to a repo and fail the build when required text is missing.
  • Google Drive: batch-process a folder of scans and store the JSON next to each file.

Every run is also available through the Apify API and the Apify client libraries for JavaScript and Python.

๐ŸŒŸ Beyond business use cases

  • ๐Ÿ”ฌ Research: build multilingual OCR datasets with ground-truth positions.
  • ๐Ÿ  Personal: turn photos of recipes, whiteboards and book pages into notes.
  • ๐Ÿค Non-profit: make image-only flyers and announcements accessible as text.
  • ๐Ÿงช Experimentation: feed word coordinates into layout-aware LLM prompts and compare against other OCR engines.

๐Ÿค– Ask an AI assistant about this scraper

Paste this into ChatGPT, Claude or Gemini: "I have a dataset from the Apify Google Lens OCR Scraper with fields text, language, lines and words with x, y, width, height and rotation. Write code that draws the word boxes over the original image."

โ“ Frequently Asked Questions

๐Ÿ–ผ Which image formats are supported?

JPEG, PNG, WebP, GIF, BMP and TIFF, up to 20 MB per image. Images are downscaled to 1000 px on the long side before recognition; coordinates are mapped back to the original size.

๐Ÿ”— Can I send base64 images instead of URLs?

Yes. Put a data:image/png;base64,... string in the Image URLs list and it is read like any other image.

๐ŸŒ Do I need to tell it the language?

No. The language is detected automatically and returned as both a code and a name.

๐Ÿ“ What does rotation mean?

The tilt of the text line in degrees, counter-clockwise positive. A vertical line reads as about 90 or -90.

๐Ÿ” Does it return visual matches or similar images?

No. This Actor is text recognition only. Google serves the visual-match results page only to interactive browser sessions, so this Actor focuses on what the Lens recognition API returns reliably: text, layout and language.

๐Ÿ–Š Does it read handwriting?

Clear handwriting is often recognized, but accuracy is best on printed text with good contrast.

๐Ÿงฎ What about formulas?

When Google recognizes a formula, the word carries an extra latex field.

๐Ÿ’ต Am I charged for images that fail?

No. Failed images produce an error row and are never charged.

๐Ÿšฆ Is there a rate limit?

None was hit at 5 parallel images. You can raise Concurrency up to 20; lower it if you see API errors.

๐Ÿ›ก Do I need a proxy?

No. The recognition API is open. A proxy option exists in case your own network is restricted.

๐Ÿ“ฆ How do I get the results?

Open the run, click Dataset and export CSV, Excel, JSON or XML, or fetch them through the API.

๐Ÿ”Œ Integrate with any app

The dataset is available through the Apify API, webhooks and integrations with Make, Zapier, Slack, Airbyte, Google Drive, GitHub and more.

๐Ÿ”— Recommended Actors

๐Ÿ’ก Pro Tip: browse the complete ParseForge collection.

๐Ÿ†˜ Need Help? Open our contact form

โš ๏ธ Disclaimer: This is an independent tool and is not affiliated with, endorsed by, or connected to Google. It only processes images you provide and uses publicly reachable services.

What input does the Google Lens OCR Scraper accept?

FieldTypeWhat it doesDefault
imageUrls required array Public image URLs (JPEG, PNG, WebP, GIF, BMP, TIFF) or data:image/...;base64 strings. One result row per image. ["https://raw.githubusercontent.com/tess
maxItems integer Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000 10
includeWords boolean Add a words array (text + pixel box + rotation) to every line. Makes rows larger. true
concurrency integer How many images are processed in parallel. 5
proxyConfiguration object Optional Apify Proxy settings used both to download the images and to call the Lens API. {"useApifyProxy":false}

How much does the Google Lens OCR Scraper cost?

from $3.00 per 1,000 results

Charged forWhat it isPrice each
Image read One image processed with Google Lens OCR: full text, language, line and word boxes. Failed images are never charged. $0.003 to $0.00399

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

How do I call the Google Lens OCR Scraper API?

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST ยท run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~google-lens-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "imageUrls": [
      "https://raw.githubusercontent.com/tesseract-ocr/tessdoc/main/images/eurotext.png",
      "https://raw.githubusercontent.com/JaidedAI/EasyOCR/master/examples/english.png",
      "https://raw.githubusercontent.com/JaidedAI/EasyOCR/master/examples/chinese.jpg"
    ],
    "maxItems": 10,
    "includeWords": true,
    "concurrency": 5,
    "proxyConfiguration": {
      "useApifyProxy": false
    }
  }'

What example inputs can I use?

Use these inputs to see how a run is configured.

input.json
{
  "imageUrls": [
    "https://raw.githubusercontent.com/tesseract-ocr/tessdoc/main/images/eurotext.png",
    "https://raw.githubusercontent.com/JaidedAI/EasyOCR/master/examples/english.png",
    "https://raw.githubusercontent.com/JaidedAI/EasyOCR/master/examples/chinese.jpg"
  ],
  "maxItems": 10,
  "includeWords": true,
  "concurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}

What do users say about the Google Lens OCR Scraper?

No reviews yet. Be the first.

How do I report an issue with the Google Lens OCR Scraper?

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

What related scrapers can I use?

Run Google Lens OCR Scraper on Apify All scrapers