Need Help: Rate-Limit Issue with Gemini API for Accessible PDF Project

Hello Google AI Community,

I am visually impaired and I face huge challenges in accessing complex documents like PDFs with tables, math-heavy content, and numbered lists. Standard OCR tools fail to properly read such documents, creating errors in tables, headings, numbering, and mathematical notations. This makes learning and reading extremely difficult for me.

To solve this problem, I started an accessibility project. The idea is: each PDF page is converted to an image and sent to AI for structured extraction. The AI then produces a JSON format containing headings, tables, image descriptions, and other elements. Finally, all data is compiled into a properly formatted Word file that I and other visually impaired users can read. This is not just for me but can help many others who struggle with inaccessible PDFs.

For this, I was using Google Gemini 2.5 Flash model through AI Studio. However, I quickly hit the rate limit. I can only send 10 requests per minute, and my quota has already run out. Even though I use very few requests, the system limits prevent me from continuing. I do not have the money to buy paid API access, and this is a real barrier to completing the project.

I am not asking anyone to build this for me. I am asking for advice or guidance on:

  • How to handle or increase API rate limits
  • Alternative models or methods suitable for processing images of PDF pages in a structured, accessible format
  • Any free resources, tips, or approaches for accessible document processing using AI

This project is extremely important for me and other visually impaired users who struggle with inaccessible PDFs. Your guidance can help make this project viable and truly impactful. I am a student and have limited resources, so any help is immensely appreciated.

Thank you very much for your understanding and support!

1 Like

Hi @abhishek_kumawat,

Welcome to the Google AI Forum! :confetti_ball: :confetti_ball:

Strategies to get free credits

Option 1:
Google Cloud offers a 12-month free trial with US$300 in credits for new users, which you can apply toward many Google Cloud services (including AI/ML services).

If this is still not enough, try-out Option 2

Option 2:
Google Cloud’s Startup Program: If you are (or your company is) an early-stage startup, you can access much larger credits. Example: Up to US$350,000 in cloud credit (over 2 years) for AI-first startups.

Please refer to this link for more details

Option 3:
Collaborate with universities. Google offers “research credits” for academic researchers at higher-education institutions: you can apply for Google Cloud credits to support research projects. Here is the link

Option 4:
Collaborate with Non-Profit or create one.
The program Google for Nonprofits offers eligible organizations some free credits and access to Google Cloud services. Here is the link

Ways to handle rate limits

Implement retrys with Exponential Backoff: This is a standard error handling strategy for network applications. When you hit a rate limit and receive a 429 error, your code should wait for a progressively longer time before retrying the request. This prevents you from continuously hitting the limit and allows your processing to continue smoothly, albeit at a slower pace.

Here is a reference on my previous post on retry’s with exponential backoff:

Alternative Models and Methods

For your specific use case of extracting structured information from complex PDFs, the Gemini API is a great general-purpose tool. However, Google Cloud also offers more effective service called Document AI.

Link to Document AI and Pricing

Document AI is built to understand and extract data from documents. It has pre-trained models for common document types and can handle complex layouts, including Tables, Forms, Layouts, etc.

Free Resources and Best Practices

  • Batch Processing: When possible, try to process multiple items in a single request to reduce the number of API calls. While you are sending one image per page, ensure your code is efficient and not making unnecessary calls.