OCRFeeder 0.8 is out

After a long time without a new release, OCRFeeder 0.8 is out! The previous version was released in February 2013 from another continent :) After that a lot of things happened in my life (very good ones) and I didn’t really have much time to devote to the project.

What’s up?

This version represents one big change: it was ported to GObject Introspection (and thus GTK+ 3)!
This is also related to the delay (because GooCanvas’s GI, a dependency, was not usable in the beginning). Also, after the port started, a few things were deprecated in GTK+ — like Stock items — but this will only be updated on a future release.

I didn’t want many new features in this version as I wanted it to be basically about the port to GI. This way, “eventual” bugs are likely to be about this change and not about unstable new features. I included a small novelty however: support for multi-page TIFF images.
There are, of course, some other small improvements that were developed, as well as a number of bugs that were fixed.

Future

Work, life and other projects make it more and more difficult to find the time to work on OCRFeeder. I would nonetheless be happy to help anyone interested in contributing to it to give the first steps. I believe that OCRFeeder is a useful project and not only for accessibility purposes (although this is a great reason on its own!) so, if you like Python, GTK+, and want to help make this project better, drop me an email.

I need to thank one more time to the awesome GNOME i18n team for keeping OCRFeeder available in many languages and to my dear friend Berto for keeping the Debian package up to date and for the useful bug reports!

Source tarball
Git
Bugzilla

What a year!

What a crazy year this was! In 2013 many important events happened in my life that would make this a very busy year.
To start, I began the year looking for a new job after 4 years working for Igalia. This meant that I had to travel a lot and move (with Helena) from the place I felt like home (the city of Coruña), having to say good bye to many good friends.

This search also took me to the U.S.A. for first time where I met a very interesting company and people. Since Helena and I didn’t do our traditional travelling this year, going to San Francisco was definitely the most interesting trip of the year for me. I really want to visit it again some day together with Helena.
Then I ended up joining Red Hat, where I kept working with GNOME technologies — mainly on the Wacom related pieces — together with some of the best Open Source developers in the world. I also moved to Berlin, the city I am in love with, which meant fulfilling a dream we had for a few years. My dear friend Chris Kühl helped make this move smoother so I have to thank him here again.

After just a few months in Berlin, I received the positive result of an application to CERN that I had done before all this and I had to make yet another decision. We decided to do it and we moved out of Berlin just shortly after knowing that we will become a family of 3 next year! Our little girl Olivia will be born next March and we cannot express how excited we are about it!

Life in this region is very different from Berlin’s (not bad, just different) but CERN is a very unique place and I am enjoying the experience.
Our arrival here was also easier because of Quim and his wife Ana Marta, a couple of friends from University who really couldn’t have helped us more. Together with our good friend Nacho, they are really “5 stars” as we say in Portuguese :)
I need also to mention my parents who not only helped us with moving out of Spain but also drove all the way from Portugal to France in order to visit us and bring us our stuff.

Technically, I live in France, in a small town called St Genis Pouilly, close to CERN on the French side of the border but it’s really still Geneva’s area. A curious thing about Geneva is that its largest foreign community is the Portuguese. I hear more people speaking Portuguese at the supermarkets in here than in Algarve :)
One of the things I miss from Berlin is the possibility to easily ride a bike anywhere. In here it is dangerous (drivers are crazy and there’s no bike lanes) and less convenient (Berlin is flat, here it isn’t) but I found another physical activity to compensate a bit my sedentary job: I started playing squash and I love it!

As a result of all these changes, my personal projects got a bit neglected. I released only one new version of Skeltrack and OCRFeeder (actually I got a new version of OCRFeeder almost ready to ship) and I did a couple of quick hacks with the Leap Motion Controller.
The number of books I read was also lower than ever this year. I read a couple of books by Cory Doctorow and a spy thriller called The Shanghai Factor.

Not all things in 2013 were as great as my words might indicate. My grandmother (to whom I was very close) passed away a month ago. It was a very sad event, but she lived a long life and had her family beside her in every moment.

About 2014, my biggest wish is that everything goes well with the baby and Helena. I think I will probably have to miss some of the Open Source events I usually attend but I got a good excuse, right?
I hope it’ll be a quieter year than 2013 in terms of moving and that I can still dedicate time to my personal projects.

2013 was a year I will surely remember all my life. I am a lucky person to have had the opportunity of different experiences, to have friends in many places and to have my wife and family supporting me all the time.

I wish you all an excellent 2014!

Olivia in Helena's belly!

OCRFeeder 0.7.11 released

Here is 2013′s first version of OCRFeeder, version 0.7.11.

For this version, a number of bugs were fixed, especially some that were affecting saving and loading projects.
Some small improvements were also made such as being able to load multiple images at once and being able to choose the OCR engine from the command line interface version of OCRFeeder (using the -e option).

Now for the main feature, I developed something that had been requested by a good number of users: being able to easily choose the language for the OCR engine.
When I developed OCRFeeder, I wanted to make it easy for users to use system-wide OCR engines from the layout analysis that OCRFeeder performs but I also wanted it to remain powerful and that’s why the engines are configured in a general, abstract way, as if from the command line.
Some OCR engines support setting the language in order to get a better recognition and while, users could already set the language of an engine manually using the OCR editor dialog, they wanted to have a nice drop-down list with the languages instead.
This represented a real challenge: to keep the old and flexible configuration and, at the same time, offer a high-level way of choosing the language.

OCRFeeder's new configuration
So here is how it works. There is a new special argument keyword $LANG that will be replaced by the new field “language argument” and the currently set language. Since engines support different languages (or none) and call them different names (e.g. Tesseract expects “por” for the Portuguese, others may expect “pt”) there is another new field called “languages” which should be a map between the language code in the ISO 639-1 and the name of the language of the engine expects, as shown in the screenshot.

Languages combo
To show the languages, there is a new tab in the areas’ editor called Misc (in lack of a better name for a tab that’s holding more stuff in the future) with the languages combo. This combo shows a check on the languages that the currently selected engine recognizes as seen in the screenshot.

There is also a new setting in the preferences dialog with the default language and the first time the application runs, it will assign it to the user’s locale.
One thing must be taken into account: even though Tesseract supports an extensive list of languages, the users must have those packages installed in their distros, otherwise, recognition will of course fail.

To finish, related to my recent job search, I have spent this week in San Francisco getting to know some people from an exciting start-up and despite the jet lag, I managed to finish this release so I can now say that least part of OCRfeeder was designed and developed in California :P

Source tarball
Git
Bugzilla

Here’s to a great 2013

Just like last year, here I am looking in retrospect to what happened this year but I have to be brief because Helena and I are spending the night with my parents.

Last year I said 2012 would be a year of change but, depending on the perspective, it really wasn’t. In 2013, however, many things will change for sure but I will let you know about that soon. Meanwhile, here is a bit of what happened in my life during this year.

The big trip this year was a very special one — Japan — which I won’t repeat how great it was. We also revisited London and I traveled to other places due to work (even though this year’s GUADEC was in the city I live in).

Last year, I set up a reading challenge at Goodreads for 15 books; 5 more than in 2011. Sadly, I read only a third of those… 5 books in 2012. However, I need to say that in the list there is Crytonomicon, a book I took great pleasure in reading, but which has almost 1000 pages; besides that, the list does not include a few technical books I read.

In 2012, my 4th year in Igalia, I was part of a new team — the Interactivity team. The most important part of my work was definitely the development of Skeltrack: the world’s first Open Source skeleton tracking library.
Skeltrack, together with other libraries like GFreenect was the basis for many of the projects we developed throughout the year.
5 versions of Skeltrack were released since its release, it won an award and in last November it powered a completely Open Source interactive installation in Berlin.

As for other projects, I released 3 versions of OCRFeeder and only 1 of SeriesFinale in 2012.

To finish, this year I restyled my blog, with dedicated sections for the travels and presentations I do and the software I write.

Have a great 2013!

OCRFeeder version 0.7.10

The previous OCRFeeder‘s version was released in April. I have been busy with Skeltrack and other projects but, between my personal time and Igalia‘s precious hackfest time, here we have a new version of the best Free Software OCR application.

For this 0.7.10 version I have improved the way that the document generators (the classes that generate the desired exportation formats) are used inside OCRFeeder. I have abstracted their use making it easy to add new document generators in the future.
The command line version, which has been limited to generating only the original exportation formats (ODT and HTML), also benefits from these changes; from this version on, it is possible to generate documents with any of the existing exportation format from the command line. For example, to generate a plain text file:

$ ocrfeeder-cli -i scan1.ppm -i scan2.jpeg -f TXT -o text_doc.txt

The current PDF exportation still has flaws that will take some time to fix but for now I have fixed a big issue: line wrap. The text lines would not wrap when written in the PDF document and so, long lines would go beyond the pages’ limits. This should be improved with this new version and I hope I have the time in the future to fix the other issues.

Moving (or swapping) pages by dragging them seems to have stopped working. This seems like a PyGTK bug but anyway it was the necessary excuse to implement actions for selecting and moving the pages using the menu or shortcuts. This will make the mentioned bug less important and also offers the possibility of moving pages easily to visually impaired users.

Screenshot of the select or move pages menus



Future

I want to fix some issues in OCRFeeder’s architecture, especially in what comes to the UI part. This should probably be done together with a port the amazing GObject’s Introspection.
Jan Losinski, from TU Dresden, was kind enough to send me some patches that make the OCRFeeder’s recognition parallel. This feature needs to be polished but it will likely land in the next version of OCRFeeder.
Last but not least, I need to check how to make it easy to integrate the user’s language in the OCR recognition. I exchanged some emails with the people from AltLinux distro who seem to have already implemented this in their repositories but I need time to try and review their patches.

Contribute

If you want to contribute and make this project better, fear not! The code is all Python and I’m available to help you get started so email me if you’re interested.

Enjoy OCRFeeder 0.7.10!

Source tarball
Git
Bugzilla