content top

Android and OCR

Android and OCR
I’m still remembering it well, the first piece of software I wrote when I came to the US was a de-skewing algorithm. Deskewing an image helps a lot, if you want to do OCR, OMR, barcode detect, or just improve the readability of scanned images.
At the time, I was working for a small software company, developing TeleForm, an application that reads data from paper forms and stores that data in previously created databases. The Cardiff TeleForm product was later re-branded Verity-TeleForm for a brief period in 2004 and 2005 when Verity Inc. acquired Cardiff Software. In 2005, when Autonomy acquired Verity, the Cardiff brand was reintroduced as Autonomy Cardiff (http://www.cardiff.com); more recently, Autonomy was acquired by HP.

Optical character recognition, usually abbreviated to OCR, is the mechanical or electronic translation of scanned images of handwritten, typewritten, or printed text into machine-encoded text.

Image Deskew is the process of removing skew from images (especially bitmaps created using a scanner). Skew is an artifact that can occur in scanned images because of the camera being misaligned, imperfections in the scanning or surface, or simply because the paper was not placed completely flat when scanned.

Now most of the data entry or origination happens on the Web, where most of the forms processing has been moved to as well, i.e. OCR hasn’t been in vogue for quite a while. However, the popularity of smartphones, combined with built-in high-quality cameras has created a new category of mobile applications, benefiting greatly from OCR. Take Word-Lens (http://questvisual.com) as an example: an augmented reality translation application that tries to find out what the letters are in an image and then looks in a dictionary, to eventually draws the words back on the screen in translation.

On Device or In The Cloud ?

Before deciding on an OCR library, one needs to decide, where the OCR process should take place: on the Smartphone or in the Cloud. Each approach has its advantages.
On device OCR can be performed without requiring an Internet connection and instead of sending a photo, which can potentially be huge (many phones have 8 or 12 Mega-Pixel cameras now), the text is recognized by an on-board OCR-engine.

Read More

Android ICS Source Code for your IDE

Android ICS Source Code for your IDE

“Your father’s light saber. This is the weapon of a Jedi Knight. Not as clumsy or random as a blaster; an elegant weapon for a more civilized age. For over a thousand generations, the Jedi Knights were the guardians of peace and justice in the Old Republic. Before the dark times… before the Empire.”

While the Android 4.0 SDK comes with a complete set of javadocs, the source code of the SDK is missing in the SDK distribution. This is very unfortunate, since you cannot easily debug into SDK methods (at least not without running into de-compiled code) nor can you see how things actually work.

Eclipse - Source Not Found

However, there is a quick fix to that problem. I downloaded the complete Android source including the Linux, drivers, libs, etc., like explained here: http://source.android.com/source/download.html and ran small Java program on the source tree. I used to this with a simple bash script but over the last couple of Android Releases, the java source locations got a little more diverse and I started missing a couple files. So instead, this Java program walks the source tree and looks for java source files. All those will then be copied into a new location, considering their package name. Finally, the jar tool gets called to put all the source into a single bundle for easier handling.

Read More

Running Errands with Google Wallet

Running Errands with Google Wallet

Running errands with Google Wallet in San Diego’s Carmel Valley / Rancho Bernardo area (92128 / 92129 / 92130)

Tap & Go a.k.a PayPass, is a new simple way of paying. PayPass is a payment method that lets you make purchases without having to swipe your card or provide your signature. A simple tap with a card, key fob, or mobile phone is all it takes to pay at checkout.

So this Saturday morning, I took paying with a mobile phone to the test – the only method of payment available to me was the Google Wallet application on a Samsung Nexus S Android Phone running on Sprint’s 4G Network.

Google Wallet can be linked to a Citi MasterCard, or like I did, used as a prepaid card, funded with any of my existing credit cards.

Read More

Tiffany meets Android

Tiffany meets Android

Ever since I started working on the Android platform and Android phone and tablet applications, I found it challenging to show my ideas, designs, and prototypes to a group of people, no matter how small that group was. Naturally, I wanted to not just explain concepts and behaviors but to show a live demo on a phone. However, the screen-size of a phone can be a serious obstacle when presenting to a small group. Moreover, the phone often gets covered by my hand when interacting with a mobile application.
I have tried to capture the phone’s screen with a video-camera and showing the live-view on a bigger monitor but reflections, glare, and insufficient lighting resulted almost always in an even worse experience and only in an controlled environment (light-box etc.), filming worked well and I was able to capture footage with a reasonable quality.

For the last couple of weeks now, we have started experimenting with USB-tethered Android screen capturing in combination with TiffanyScreens.

Read More

Remembrance

“The C Programming Language” originally published in 1977. My German copy was printed in 1983.

Read More

TiffanyScreens – Astoundingly Faster

TiffanyScreens – Astoundingly Faster

I never really liked those meetings, sitting in a room with slightly dimmed lights, participants facing a wall, watching power-point slides, and trying to follow a mostly boring presentation. A discussion – if at all – would most likely happen after the presentation. Changing laptops is too cumbersome with all the disconnecting and re-connecting of cables involved – not to talk about syncing the laptop to the projector’s max resolution.

Since most participants seem to bring a laptop, to those meetings to check Email, IM, etc. I had the idea to instead of the wall, use the laptops’ screens as a presentation canvas, i.e. we could all sit on a round table again, facing each other, instead of the wall.

I wrote a small self-contained (doesn’t use a server) multi-platform application a.k.a TiffanyScreens, to capture the presenter’s screen content and send it to the other participants. Best of all, with a simple push of a button, an observing meeting participant becomes a presenter, showing her screen’s content to the other team members.

Up to now, TiffanyScreens was implemented in pure Java. While the installer was implemented and compiled on the native platform, the application itself did not take advantage of OS native capabilities.

Read More
content top