Tesseract training with multipage tiff - tesseract

How does the box file need to look like if I use a multipage tiff to train Tesseract?
More precisely: how do the Y-coordinates of a box file correspond to Y-coordinates within pages?

The last, 6th column in the box file represents zero-based page number.
https://github.com/tesseract-ocr/tesseract/wiki/Make-Box-Files
Update:
https://github.com/tesseract-ocr/tesseract/wiki/TrainingTesseract
Each font should be put in a single multi-page tiff and the box file
can be modified to specify the page number for each character after
the coordinates. Thus an arbitrarily large amount of training data may
be created for any given font, allowing training for large
character-set languages.
Even if you can have as large training text as you want, it could potentially result in unnecessarily large image and hence slow down training.

Related

NVIDIA DIGITS: Get accuracy for segmented images

I am trying to use NVIDIA DIGITS to perform image segmentation (by following this article). After training the model, I was able to perform the segmentation on individual images.
Now I would like to give a list of test images and labeled images to DIGITS, and I want it to calculate accuracy for the input images. Is it possible to do it using DIGITS, if yes, then what are the steps? (options to select on framework while training/testing model, format of input file, folder structure, etc.)
Also, if DIGITS can't do it, then are there any other frameworks? (I read this post, but it would be better if I can directly use some plug-and-play framework, to begin with)
Thanks!

Tesseract mixing up "1" and "7" despite training on exact font

I am using tesseract to get text from an image, I am only interested in numbers. I have trained tesseract and created a new language that is the exact font in the image and the training data only included numbers. In the training data I also included every possible value that would be in an image, 1-5000 to be specific and also created a wordlist of these same values. However it still mixes up 1 and 7, as well as sometimes 3 and 8. Does anybody have any recommendations on whether I should retrain differently or do some processing on the image before giving it to tesseract?
Make sure there are at least 20 instances of every character in the training texts you provide to tesseract. I give at least 6 pages of the same font to have a decent training sample size.
2.Tesseract Text Recognition also depends on the image quality. Check out possible preprocessing algorithms you can use: Improve Quality of Tesseract
Take a look at the number_dawg file. Modifying it can help recognising digits.

Accessing Individual Images in Multipage TIFF in Mathematica

I have 12 large (1gb each) multi-page TIFF files containing 1500 images that represent a time series of 3D data.
To keep memory consumption at bay, i would like to only read individual images from the multi-page TIFF files, instead of reading everything and then selecting only the required file.
Is there an option to Import that I'm missing or is there another approach?
Thanks,
Try for example:
pageNbr = 3;
Import["C:\\test1.tif", {"ImageList", pageNbr}]

Detect if email is essentially text

I'm writing an Outlook Add-in that saves emails for historical purposes. Outlook's MSG format is unfortunately overly-verbose, even when compressed. This causes saved MSG files to be many times the size of their text equivalent. However, saving all messages as text has the obvious pitfalls of lacking attachments, images, and any relevant formatting.
For the majority of emails this isn't an issue, however emails with a certain degree of complex formatting, pictures, attachments, (etc...) ought to be saved in MSG format.
The majority of users' emails are sent as HTML making my algorithm roughly as follows:
1. If email has attachment(s), save as MSG and be done
2. If email is stored as text, save as text and be done
3. If email is not stored as HTML store as MSG and be done
4. Decide if the HTML should be converted to text and
store it as text if so
store it as MSG if not
This is straightforward with exception of Step #4: How can I decide which format an HTML-formatted email should be converted to upon saving?
An idea: count the weighted density of HTML tags in the message. Choose a threshold based on existing data. Messages with HTML density higher than the threshold get stored as MSG; messages with density lower than the threshold get stored as plain text.
How do you calculate the weighted density? Use an HTML parsing library. Have it parse the document and count the number of each type of HTML tag are in the document. That's all you need from the library. Multiply each tag-count by its weight and sum them together. Then try converting the message to plain text and counting the number of characters in the message. Divide the weighted-tag-count-sum by that number and you have your density.
What should the density be weighted by? By a table you create with the importance of each type of HTML tag. I would guess that losing bold and italics are not too bad. Losing ordered and unordered lists lists are a bit worse, unless bullets and numbers are preserved when the messages are are converted to plain text. Tables should be weighted highly as they are important to the formatting. Choose a weight for unrecognized tags too.
How should you choose your threshold? Run your density-calculating function on a sample of emails. Also manually inspect those emails to see if they would be better off as MSG or plain text, and write that choice down for each email. Use some algorithm with that data to find the boundary value. I think that algorithm could be Naive Bayes classification, but there might be a simpler algorithm in this case. Or a human-calculated guess might be good enough. I think you could make a guess after looking at a scatter plot of human-chosen format vs weighted HTML tag density, and eyeballing the density value that approximately separates the two format decisions.

How can I read a text file of image intensity values and convert to a cv::Mat?

I am working on a project that requires reading intensity values of several images from a text file that has 3 lines of file header, followed by each image. Each image consists of 15 lines of header followed by the intensity values that are arranged in 48 rows, where each row has 144 tab-delimited pixel values.
I have already created a .mat file to read these into Matlab and create a structure array for each image. I'd like to use OpenCV to track features in the image sequence.
Would it make more sense to create a .cpp file that will read the text file or use OpenCV and Matlab mex files in order to accomplish my goal?
I'd recommend writing C++ code to read the file directly independent of Matlab. This way, you don't have to mess with row major vs. column major ordering and all that jazz. Also, are there specs for the image format? If it turns out to be a reasonably common format, you may be able to find an off-the-self reader/library for it.
If you want the visualization and/or other image processing capabilities of Matlab, then mex file might be a reasonable approach.