Introducing AfsaneDB (Beta) – Now Available on Play Store!
Dive into the world of classic literature with AfsaneDB. Explore timeless masterpieces in an elegant and user-friendly app, designed for book lovers like you.
Wednesday, 31 December 2025
Monday, 13 January 2025
Setting Up OCR for Windows and Linux: A Comprehensive Guide
Automating repetitive tasks like extracting text from images can save valuable time (unless you don't value it, in that case it will save some worthless time). This process, known as Optical Character Recognition (OCR), is a powerful tool for converting text in images into editable formats. Here, I’ll walk you through setting up custom OCR solutions for both Windows (that we all have) and Linux (mostly used in offices) systems, complete with keyboard shortcuts for seamless integration.
I primarily use OCR for Urdu in my personal work, but professionally it is also required for English. Using Google Lens is a fine option, except if you dislike repeating those clicks and key presses just to copy text from an image. And to be honest - I kind of feel bad even for giant corps like Google when I unnecessarily utilize their 'precious' resources.
Why not use a browser extension you ask? Well, because it's limited to browser - and we do need text from other apps as well. You can argue that one can take a screenshot of that app and then go to browser and run OCR, but if you have opened a browser and afford to take a screenshot just for that, why not run Google Lens instead of an extension. You get the point.
Background
OCR technology is invaluable for tasks such as digitizing printed documents, extracting text from screenshots, or processing scanned images. By automating OCR, you can:
- Instantly access extracted text.
- Improve productivity.
- Simplify your workflow.
This guide provides a step-by-step walkthrough for setting up OCR on Windows and Linux, ensuring a smooth and user-friendly experience.
Introduction
Why Automate OCR?
Manual text extraction is time-consuming and error-prone. Automating the process ensures:
- Faster access to text data.
- Minimal effort for repetitive tasks.
- A consistent and reliable workflow.
How It Works
We’ll create scripts for Windows and Linux that:
- Capture an image or utilize an existing one.
- Perform OCR using Tesseract (an open-source OCR engine).
- Copy the extracted text directly to the clipboard.
Setup
Prerequisites
Before getting started, ensure you have the following:
Tesseract OCR
- Download and install from Tesseract’s official page.
- Install necessary language packs (e.g.,
-l engfor English,-l ara+engfor Arabic and English).
Clipboard Utilities
- Windows: Use
nircmdfor clipboard operations. - Linux: Install
xclipfor clipboard management.
- Windows: Use
Screenshot Tools
- Windows: Use built-in snipping tools or third-party software.
- Linux: Install
flameshotfor advanced screenshot functionality.
Procedure
For Windows
1. Create the OCR Script
Create a batch file named sstoocr.bat and save it in a convenient location:
@echo off
:: Save clipboard to image
start nircmd/nircmd.exe clipboard saveimage screenshot.png
:: Run Tesseract OCR on the image
tesseract screenshot.png output -l ara+eng
:: Copy extracted text to clipboard
type output.txt | clip
:: Optionally, clean up
:: del screenshot.png
:: del output.txt
2. Assign a Shortcut
- Place the script on your desktop.
- Right-click the script and select Create Shortcut.
- Right-click the shortcut, go to Properties, and under the Shortcut tab, assign
Ctrl + Alt + Oas the shortcut key.
3. Use the Script
- Copy an image to the clipboard or take a screenshot.
- Press
Ctrl + Alt + O. - The extracted text will automatically be copied to your clipboard.
For Linux
1. Create the OCR Script
Create a shell script named flameshot_ocr.sh:
#!/bin/bash
flameshot gui --raw | tesseract -l eng stdin stdout | xclip -selection clipboard
Make the script executable:
chmod +x flameshot_ocr.sh
2. Assign a Shortcut
- Open your desktop environment’s keyboard settings.
- Add a custom shortcut:
- Command:
/path/to/flameshot_ocr.sh - Shortcut:
Ctrl + Shift + O
- Command:
3. Use the Script
- Press
Ctrl + Shift + Oto open the Flameshot GUI. - Select the area to capture.
- The text will be extracted and copied to your clipboard.
Conclusion
By following this guide, you can set up a streamlined OCR solution for both Windows and Linux. With a simple keyboard shortcut, you’ll have quick access to extracted text directly on your clipboard, saving time and effort.
Feel free to customize these scripts to better suit your needs. Happy automating, and may your workflows become ever more efficient!
Tuesday, 6 February 2024
Sleepless night
Wednesday, 26 April 2023
Building an App Builder - Strategies, Limitations and Available Tools
As a budding app developer, creating an app builder for mobile devices is an exciting idea which I'm giving a lot of thinking since early 2019. However, there are several strategies, and limitations that need to be considered before embarking on this journey. In this blog post, I will explore these aspects in detail.
This would be a brainstorming session for me, where I'd just put all that I've found while researching this subject.
Techniques
Scratchware
Scratchware was an interesting project but is now deprecated. Its technique was unique, where the app was built on the device itself, without any internet connection. However, other app builders mostly build the app on the server. Therefore, it is not necessary that the build part should be on the server.
Scratchware was based on MIT App Inventor as per their website before the deprecation. Showing ads before each build, and giving options to arrange items (buttons, cards, inputs, labels etc.) in rows and columns were really awesome features. For logic, it used Scratch Programming blocks.
APK Editor
Another app builder that is worth mentioning is APK Editor, which uses ARSCLib. Another similar one is APK Explorer Editor, which offers a full version via Fdroid.Other repos for Apk Editor might be using apktool.jar. Apktool is also being used in many Android apps, like revanced. How are they able to run.jar tools is a mystery for me yet, as executing jar requires JRE while Android runs on Dalvik Virtual Machine.
A workaround (or not?) is to use jar library via custom Cordova plugin. Plugin docs suggest it can be done easily. See this suggestion from a stackoverflow answer:
Add lib-file element to your plugin.xml:
<platform name="android">
<lib-file src="AztecReader.jar" />
</platform>
Anyway, ApkEditor recompiles the app on the device itself, without any internet connection. This approach proves that building an app builder on a mobile device is possible without the need for a server.
Cordova-like Environment
Creating a Cordova-like environment on a mobile device seems difficult. Even though initializing an empty Cordova app within the user's device is possible using Node Mobile or AndroidJs, compiling the APK will be tricky as it would need gradle, java jdk, android build tools, apksigner, etc. The end-users may not have these tools installed on their devices, making it difficult for them to compile the app.
Termux
Java runtime, etc., would be possible using Termux in android, but that would require end-users to have Termux installed, which may be a challenge.
Using a Sample App as a Base
Another approach could be to use a sample app as a base and replace its content at runtime using a user-defined config file. This approach is similar to the Cordova-like environment but is more simplified and straightforward.
Meta-data
One of the most popular strategies for creating an app builder is to use meta-data. In this strategy, the "app" you define is meta-data in a higher-level definition that is interpreted in a host wrapper app. This approach makes it easier to create apps as the app builder is more of a code generator.
Desktop - HTML to APK
A tool I found, and tested but never used in production or even to build anything remotely of any use for myself is Website to APK which is a desktop-based tool. The interface looks like it's built using the C# Windows Form Application. The options are really great, and it's user-friendly.
Softonic's dev bio hyperlink suggests Pravesh Agrawal as the developer. Web, Github, Twitter.
It seems to be using all the standard tools in the background (probably running a bash script for build instructions). Options to select a URL or a local folder are awesome, along with an icon, splash screen, and setting up Admob ids in presumably pre-configured ad spaces.
This perfectly depicts the "meta-data" type or a "base app" already set, which is modified based on the user's input.
Available Tools
There are several tools available for creating an app builder on mobile devices. Some of these tools include:
AppSheet: AppSheet uses a meta-data strategy to create an app builder. It interprets the higher-level definition in a host wrapper app, making it easier to create apps.
A sample response to the question "Building an App Builder - how do they do it?" on stackoverflow as a reference:
I work at AppSheet. There are two basic approaches an app builder can follow: (a) act as a code generator, or (b) implement an intepreter. In the former case, it spits out code that gets compiled into an executable package that can be installed and run on a device. In the latter case, the "app" you define is meta-data in a higher-level definition that is interpreted in a host wrapper app. Each has its strengths and weaknesses. AppSheet uses the latter approach. — Praveen Seshadri
Thunkable: Thunkable uses a simple drag-drop interface and loads of pre-defined templates and customizations. As far as I remember, It also uses Sratch for programming logic similar to Scratchware.
Andromo: Andromo is an online app builder that lets you create Android apps without any coding. It has a user-friendly interface that makes it easy to build apps.
BuildFire: BuildFire is another online app builder that offers a drag-and-drop interface for creating Android apps.
Conclusion
I'm not really sure which strategy would work the best, but a couple of them looks promising to me. For Android on Android, editing the APK and recompiling might be the easiest one. Although I've to dig deeper to understand how APK editor and the likes do it. It's not just unzip and re-zip of the package, which often results in app corruption.
A desktop app might be simple, but dependencies should be bundled within the executable in that case, otherwise, it'd again feel like something built for advanced users.
References
Scratchware Pro continued on GitHub
How do I build a Cordova 8.x cordova.jar to include in existing Android app?
Integrating Hybrid App (Cordova) with Native App (Java android app) — Part 1 by pankajbhandari08
Decompile and Modify APKs on the go with APKTool for Android [XDA Spotlight] introduces apktool by Andro Black
Android Studio: Add jar as library? Directly or using mavenCentral as per one of the comments
Including .jar file into cordova plugin with suggestion to add lib-file in plugin
Friday, 19 November 2021
Hirday Men Ik Jot Jali Hai - Ghazal by Shakeeb Ahmad
Read in Urdu (Perso-Arabic) script here.
English
Apna man dukhiyaara kaisa, apana haal to aisa hai
Hirday mein ik jot jali hai jisne tan-man phoonka hai
Prem nagar mein ik din mein aa nikala tha bhoola bhatka
Khud ko bhool chuka hoon tab se, jag bhi saara bhoola hai
Kitnee kaThin hai prem pareeksha, prem hua to kis se hua
Apne aap ko sabse chhupa ke jisne chain ko loota hai
Is sansaar mein sab hai tumhaara laikin preet ke taapu par
Tum ke viyog mein jo dukh bhoge us ka maza to mera hai
Sufi mulla sant pujaari vird vazeefe sab kuchh hech
Preetam ke jalve ke aage yaaro sab kuchh pheeka hai
Main bhee maala pher raha tha us ik naam kee barson se
Ashkon kee maala pe japa tab naam vo dil mein utra hai
Man to bahut hai naat likhoonga pyaar se us ko gaaunga
Lekin tumne mujh kambakht ko is qaabil kab samjha hai
Poochh raha hoon basti-basti aankhon mein ummeed lie
Ek Shakeeb Ahmad hota tha tumne us ko dekha hai
Hindi
अपना मन दुखियारा कैसा, अपना हाल तो ऐसा है
हृदय में इक जोत जली है जिसने तन-मन फूँका है
प्रेम नगर में इक दिन में आ निकला था भूला भटका
ख़ुद को भूल चुका हूँ तब से, जग भी सारा भूला है
कितनी कठिन है प्रेम परीक्षा, प्रेम हुआ तो किस से हुआ
अपने आपको सबसे छुपा के जिसने चैन को लूटा है
इस संसार में सब है तुम्हारा लैकिन प्रीत के टापू पर
तुम के वियोग में जो दुख भोगे उस का मज़ा तो मेरा है
सूफ़ी मुल्ला संत पुजारी विर्द वज़ीफ़े सब कुछ हेच
प्रीतम के जल्वे के आगे यारो सब कुछ फीका है
मैं भी माला फेर रहा था उस इक नाम की बरसों से
अश्कों की माला पे जपा तब नाम वो दिल में उतरा है
मन तो बहुत है नात लिखूँगा प्यार से उस को गाऊँगा
लेकिन तुमने मुझ कम्बख़्त को इस क़ाबिल कब समझा है
पूछ रहा हूँ बस्ती-बस्ती आँखों में उम्मीद लिए
एक शकीब अहमद होता था तुमने उस को देखा है
Meanings
Friday, 17 September 2021
Teri Muhabbat Ka Jaam Pi Kar - Ghazal by Shakeeb Ahmad
To read in Urdu (Perso-Arabic script), click here.
GHAZAL
English
Hindi
Meanings
Friday, 28 May 2021
People I listen to...
Over the years, many have asked me to suggest what to read, watch and listen to which will benefit them. For the books, I've started writing reviews about the ones which I like.
Here, I've listed all the channels I've been listening to. The list is not complete and subject to updates. Also, names are not in any particular order.
— Shakeeb
Note: Obviously, I don't agree with everything a speaker promotes.
Philosophy, Psychology & Logic
Prof. Jordan Peterson
Steven Crowder
Vsauce
Adam Ruins Everything
Ben Shapiro
Ahmad Javaid
Entertainment
Jim Browning
Nigahiga
UFC
Mojahed Fudailat (UFC Animations)
Bad Lip Reading
Patriot Act (Hassan Minhaj)
Obayd Fox (Ar+En Vlogs)
Karan Singh Magic
Shaheer Khan
Dawood Savage
DIY Perks
IT & Programming
Fireship.io
Two Minute Papers
Code Bullet
DevEd
WebdevSimplified
Ben Awad
The Net Ninja
Srinivas Tamada
Graphic Designing
Mohamed Achraf
Logos by Nick
Politics
Dhruv Rathi
Maulana Sajjad Noumani
ScoopWhoop Unscripted
Shahbaz Ansar (ThePrint)
The Deshbhakt
Dawah & Comparative Religion
Sheikh Ahmad Deedat
Dr. Zakir Naik
Mohammad Hijab (and group)
Mufti Yasir Nadeem Al Wajidi
Maulana Kaleem Siddiqi
The Muslim Skeptic
Islam, Quran & Jurisprudence
Peer Zulfiqar Naqshbandi
Nouman Ali Khan
Mufti Tariq Masood
Maulana Manzoor Mengal (Tafseer Classes)
Maulana Makki Al-Hijazi
Dr. Israr Ahmad
Youth Club
Hanafi Fiqh
Salahuddin Saifi Naqshbandi
Mufti Saeed Khan
Scholarly Subtitles (Arabic content translated)



