**Project Proposal: Bulk OCR Improvements for Wikisource**
**Profile Information**
**Name: **Pranavan V M
**Email:** pranavanvadivelumurali@gmail.com
**GitHub:** https://github.com/vm-pranavan
**Location:** Tamil Nadu, India (IN)
**Mentors:** Parthiv Menon @theprotonade, Satdeep Gill @SGill
**Typical working hours:** 18:00 IST - 01:00 IST (UTC +5:30)
**Synopsis**
Wikisource is a digital library of free-content textual sources. Currently, performing Optical Character Recognition (OCR) is often a page-by-page process. The Bulk OCR feature aims to streamline this by allowing authorized users to OCR multiple pages or entire books simultaneously. This project focuses on enhancing the Wikisource extension to allow authorized users to trigger bulk OCR and automatically insert the resulting text into the correct text layers of the corresponding pages.
**Deliverables**
- **Tiered Notification System:** Implement a logic-based tooltip system for bulk operations:
- **Success**: Triggered only if all pages in a batch are processed successfully.
- **Warning**: Triggered for "Partial Success" if some pages fail but others succeed.
- **Error**: Triggered if the entire batch fails.
- **Advanced OCR Configuration**: Build a UI to allow users to select specific OCR engines (Tesseract, Google, or Transkribus) and multiple language codes.
- **Image Pre-processing**: Integrate a "Rotate" feature to allow users to correct page orientations during the bulk workflow.
- **Batch Resiliency**: Ensure the process is non-blocking; the system will continue to the next page even if a single page in the batch encounters an error.
- **Access Control**: Restrict Bulk OCR functionality to specific authorized user groups via the Wikisource extension.
**About Me**
I’m Pranavan V M, a part-time post-graduate student pursuing my Masters of Technology in Software Engineering at Birla Institute of Technology and Science, Pilani, India, and I am a software engineer in Volvo Group Digital and IT. I am a person inclined towards full-stack development with a strong track record in international competitive programming and hackathons. I have participated in approximately 10 international hackathons organized by companies such as Amazon and MLH, winning prizes in 2 of them.
My previous project experience includes:
- **Credible**: An integrated platform for business model analysis using expert.ai Natural Language API for resume and sentiment analysis.
- **Product Score**: A web application for analyzing public reviews across the Atlassian Marketplace, Google Play Store, and App Store.
**Relevant Skills**
- **Backend**: PHP, Python, Django.
- **Frontend**: JavaScript, jQuery, HTML, CSS.
- **Others**: Gerrit, Git, Docker
**Availability**
1. Are you eligible for Google Summer of Code?
- Yes. I’m eligible according to the terms described.
2. Do you plan to submit any other proposal apart from this one?
- No. This is my only go.
3. Do you have any other plans during the period of GSoC?
- No. I will be available for the entire term of GSoC.
4. How many hours per week can you dedicate to this?
- I can dedicate 30 hours per week and even more if necessary.
5. Have you been accepted to GSoC before?
- No. This is my first attempt.
Wikimedia Contributions
| Title | Status | Link
| ----- | ----- | -----
| Format Language arrays in models.json to multi-line style | Merged | https://github.com/wikimedia/wikimedia-ocr/pull/157
| Implement automatic formatting of footnote reference | Under review | https://github.com/wikimedia/wikimedia-ocr/pull/163
Timeline
| Timeframe | Task
| ----- | -----
| **Community bonding period** //(May 4, 2026 - May 24, 2026)// | - Finalize the communication channels with theprotonade and SGill. Refine the database schema changes (if any) needed for tracking bulk job statuses. - Set up a local MediaWiki environment with the Wikisource extension. Configure the Wikimedia OCR service locally and test connectivity with Tesseract. - Research the existing permission levels in Wikisource. Draft the technical design for the "Bulk OCR" entry point (e.g., a new "Bulk OCR" tab or an option in the "Tools" menu).
| **First week** //(May 25, 2026 – June 1, 2026)// | Implement the Permission Layer. Restrict the Bulk OCR tool to specific user groups (e.g., sysop, editor) using MediaWiki’s permission system to prevent server overload.
| **Second week** //(June 1, 2026 – June 8, 2026)// | Build the Page Selection UI. Create a form using OOUI (Object Oriented User Interface) that allows users to input page ranges (e.g., 1-50) or select "All Pages" in a work.
| **Third week** //(June 8, 2026 – June 15, 2026)// | Develop the Engine Selection Logic. Add dropdowns to the UI to choose between Tesseract, Google, and Transkribus engines and configure multi-language support.
| **Fourth week** //(June 15, 2026 – June 22, 2026)// | Implement the Image Rotation Feature. Add a toggle/setting in the bulk UI that sends rotation parameters to the OCR API, ensuring scans are oriented correctly before processing..
| **Fifth week** //(June 22, 2026 – June 29, 2026)// | Develop the Backend Request Handler. Use the MediaWiki JobQueue or an asynchronous JavaScript approach to send batch requests to the OCR API without timing out the browser..
| **Sixth week** //(June 29, 2026 – July 6, 2026)// | Implement Batch Resiliency. Ensure that if Page 5 fails, the script logs the error and immediately proceeds to Page 6, rather than crashing the entire job.
| **Seventh week** //(July 13, 2026 – July 20, 2026)// | Build the Status Tracking System. Create a progress bar that updates in real-time as each page in the batch completes.
| **Eighth week** //(July 20, 2026 – July 27, 2026)// | Implement Tiered Tooltips. - Success: All pages green. - Warning: If some pages failed, provide a "Download Error Log" or a list of failed pages. - Error: Alert if the API connection is lost.
| **Ninth week** //(July 27, 2026 – Aug 3, 2026)// | Implement the Automatic Text Insertion. Develop the logic to write the returned OCR text into the <noinclude> and content areas of the "Page:" namespace on Wikisource.
| **Tenth week** //(Aug 3, 2026 – Aug 10, 2026)// | Add Edit Summary & Attribution. Ensure all automated edits are tagged with a specific change tag (e.g., BulkOCR) and attributed to the triggering user.
| **Eleventh week** //(July 27, 2026 – Aug 3, 2026)// | Edge Case Testing. Test with very large books (300+ pages), non-standard image formats, and languages with non-Latin scripts. Fix any UI/UX regressions.
| **Twelfth week** //(Aug 17, 2026 – Aug 24, 2026)// | Documentation & Outreach. Write the technical documentation on MediaWiki.org. Prepare the final blog post summarizing the work, performance improvements, and user instructions.