This topic and its replies were posted before the current version of LEADTOOLS was released and may no longer be applicable.
#1
Posted
:
Tuesday, December 19, 2006 9:03:37 AM(UTC)
Groups: Registered
Posts: 15
I have a requirement in the application I'm writing to show the OCR recognition confidence for an entire field (typically should be 1 word, but not necessarily), or zone to use the LeadTools idiom, as a percentage.
I'm not sure how I can go about doing this. For a given character the confidence value seems to range anywhere from 0 to at least 200+. How can this be translated into a percentage? Also, I notice that in the documentation the value of 64 is recommend to be used as a threshold for high confidence. How is this value derived at?
Furthermore, I don't see any relationship between the RasterOcrRecognizedWords and RasterOcrRecognizedCharacters objects. How can I tell what characters go with what word and which words have the high confidence. The documentation states that the highest bit in the RasterOcrRecognizedCharacters.Confidence value represents whether the word has high confidence but if I can't tie the characters to any given word what good does this do me?
I really find this whole confidence system to be convoluted and illogical. Ideally, I'd expect the RasterOcrRecognizedWord object to have its own confidence property and a property that contains the RasterOcrRecognizedCharacters (each with their own confidence properties) that make up that word. The confidence value properties should be logical, such as a percentage. It seems that there was an attempt to make it percentage based but I don't understand it.
Lastly, any recommendation on the best way to aggregate the confidences from the entire zone's characters/words into a single confidence percentage level?
#2
Posted
:
Wednesday, December 20, 2006 6:08:47 AM(UTC)
Groups: Guests
Posts: 3,022
Was thanked: 2 time(s) in 2 post(s)
First, how characters are related to words:
Every character has a flag that indicates whether it is in the middle of a word
or not. If it is a end-of-word character, for example, this character and all
previous ones (before a different break) are grouped into one word.
If you want to know which characters are part of which word,
you can check the rectangle of the character to see if it is inside the
rectangle of the word.
The high bit is not about the character itself, but about
its presence in a word. This means if the high bit for a group of characters is
1, the word comprising them is high-confidence.
The rest of the bits are supposed to be from 0 to 100. The
value 64 is from the OCR engine documentation by ScanSoft. The engine authors
specified it, not LEAD.
#3
Posted
:
Wednesday, December 20, 2006 10:26:15 AM(UTC)
Groups: Registered
Posts: 15
Thanks for the reply.
I hadn't noticed the RasterOcrRecognizedCharacters.Flags property.
Also, to clarify, the documentation states that the word is "uncertain" if the high bit is 1 and that in the 0 to 100 range a zero has high-confidence (Another instance of being a tad counter-intuitive The value is more akin to a measure of the letter's lack of confidence).
#4
Posted
:
Friday, February 9, 2007 4:42:30 AM(UTC)
Groups: Registered
Posts: 10
Ozymandias76 wrote:
Furthermore, I don't see any relationship between the RasterOcrRecognizedWords and RasterOcrRecognizedCharacters objects. How can I tell what characters go with what word and which words have the high confidence. The documentation states that the highest bit in the RasterOcrRecognizedCharacters.Confidence value represents whether the word has high confidence but if I can't tie the characters to any given word what good does this do me?
In the same idea, i didn't find a way to link SectionName from Zone to RecognizeWord.
How to work with specific zone ?
I see there is Recognizewordzone index, but that suppose we know this index in our parser...
We can imagine a program which create different template for a OCR process, maybe the order for creating the zone will not the same but a same SectionName can be handled for one area. How to get the good words after ?
Any idea ?
Thx
ps : sorry for my poor english
#5
Posted
:
Monday, February 12, 2007 5:41:37 AM(UTC)
Groups: Guests
Posts: 3,022
Was thanked: 2 time(s) in 2 post(s)
You can do this as follow:
1. Use the GetZonesCount method to loop through the Zones in
the scanned document, loop from 0 to ZoneCount -1
2. Use the GetZone method inside the loop to get the Zone
data.
3. Use the zoneData.SectionName to get the Zone Data
SectionName for each zone, and this will let you know which index corresponds
to which section name.
#6
Posted
:
Monday, February 19, 2007 3:40:17 AM(UTC)
Groups: Registered
Posts: 10
Yeah, already found that too....
But anyway too bad we cant access directly to result's zone, we have to do it by yourself.
That should have been intuitively to ocerize just the zone we need, OR to get recognizewords list by "Section Name" parameter
#7
Posted
:
Wednesday, February 21, 2007 7:48:36 AM(UTC)
Groups: Guests
Posts: 3,022
Was thanked: 2 time(s) in 2 post(s)
One way to OCR a specific zone in a scanned image if there
are multiple zones defined is:
1. Save the zone information into a temporary zone data
file.
2. Delete all Zones except the one you need.
3. Recognize the Image you have.
4. Restore the information by loading the zone data
file.
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.