Skip to main content

Document Layout Analysis




Document Layout Analysis is our second exercise. Using the three images above our program needs to do the following:
  1. Individual characters are boxed
  2. Individual words are boxed
  3. Lines are boxed
  4. Paragraphs are boxed
  5. The paragraphs with margins

I used a bottom-up approach for this exercise. It means that I started detecting and boxing the letters to words to line to paragraph and lastly to the paragraph with margin. I created a function for each of the objectives. I used a trial and error approach for determining the appropriate kernel size for the specific function. I have a very simple step for every objectives:

  1. Load the images.
  2. Assigning of output images
  3. Convert images to grayscale
  4. Cleaning the images using Otsu's Thresholding method. (with the inversed binarized image)
  5. Assigning kernel size (1 or 2 kernels depending in the objective)
  6. Morphological Operations (Dilation, Erosion, Closing and Opening)
  7. Find the Contours
  8. Box the contours (I added some offset in the word and letter objectives because the morphological operation I used is affecting the position to be bounded by the rectangle)
  9. Writing the image to a file.
Doing the exercise, I have doubts about my algorithm because it seems very simple and not that dynamic so I just finished boxing letters, words and line for the first image (with a very dirty code) but when I heard my classmates that they also did the same I began to code the other objective I lacked.

Implementing my algorithm, big fonts and colored images are the big limitation of the program. For example, heading letters will be detected as words for the word function because of its size. (Remember that I am using a hardcoded kernel size for each of my functions.) I can only guarantee a high accuracy detection for the example images.

Here are the resulting images for example 1:

Letters

Words

Lines

Paragraphs

Paragraphs with Margin

Comments

Popular posts from this blog

Installing AsgardCMS for your Web Application

AsgardCMS is a full-featured modular and multilingual CMS on top of the Laravel Framework. Here are the steps for installing the aforementioned CMS. You can get the code using this command: composer create-project asgardcms/platform your-project-name If the terminal ask you for a token. Just follow the steps of generating a new token here: https://help.github.com/articles/creating-an-access-token-for-command-line-use/  After that, the installation must be smooth-sailing. Go t the directory of your project php artisan asgard:install Then, you will now set-up the database connection and admin creation. Finally, you can run  php artisan serve or php artisan serve --port=your-port Access the application: Application : localhost:your-port/en Admin: localhost:your-port/en/backend References:  https://asgardcms.com/install https://www.youtube.com/watch?v=MeX_D-aql6g http://asgardcms.blogspot.in/2015/12/asgardcms-inst...

Evaluating Google Tesseract

Tesseract is an optical character recognition engine. It is a free software, released under the Apache License, Version 2.0, and development has been sponsored by Google since 2006. It is considered one of the most accurate open source OCR engines currently available. The problem is very hard. Font variations, image noise and alignment problems make it extremely difficult to design an algorithm that can translate the image of text into actual text reliably. I conducted a series of tests with Machine-printed documents and Hand-written documents. Machine-printed documents  Font: Serif and Sans Serif (3 each) Font: One decorative style and one script type style Layout: Left-aligned text (3 serif, 3 sans serif) and justified text (3 serif and 3 sans serif) With figures (one serif, one sans serif) Hand-written documents One-paragraph description of yourself One-paragraph description of two other persons I used Dejavu Serif, Times New Roman, and Cambria for the Ser...