PDA

View Full Version : How to get a text properly and accurately?



mastah
06-19-2014, 07:12 PM
I tried TesseractGetText but it's just to unreliable and it makes too many mistakes.
For example I want to get text 'x' at some area for multiple fonts.

So I tried making my own bitmaps:
http://villavu.com/forum/showthread.php?t=60451

I tried loading the font..

But then I got this error: Exception in Script: Runtime error: "Error while reading stream: Wrong image format"

GetTextAt I don't understand either, could someone explain the parameters?

Is it possible to get a text in an area which is for example 'hello SRL' accurately?

Olly
06-19-2014, 09:00 PM
Show us a image of the text you want to read?

mastah
06-19-2014, 10:03 PM
23416
Thanks alot for your help!

Olly
06-19-2014, 10:35 PM
Tesseract works perfect for me.. It's all how you process the image.

{$i srl-6/srl.simba}
var
bmp, w, h: integer;
begin
bmp := BitmapFromString(197, 22, 'meJztmq2LlUEUxlX8BFFwi4gYBBWL4A0WURC0GEzCVsFkE7PF YLCIRaxis2gw+mI1mawGu/+EP/ZxD49nPva9e6/CwsDhMu+Zr2fOPHPOmdm9dWOxf9++48cObJw4eGbj0JAhq8jGq ZNwicLFs4eHDFlRcE34JQqXzx25cv7okCGryNHDf1wT5cWFY0O GrCKDTkPWKJE4DToNWV1adHr0+OGn7z+mn7/4pexVDx7eR3/v7jVX8vn28xf0779+iyo6onEpAbx89zbpvT21XvXk6ROhQoCB5 umLZ2kKH+32zUtvPnyUEngJc/Qtq/pSLn++0LFqh7IZltyxZQcJVZubd6otV8HflyqdgMGMkIGCKBHA KGhDHer1q6fRsNcon79+hR1CjwZh6+lFgzQ7mkQAWVu9EPgQVY zMIAxFG34Z3KeQQB5nIDxBQ3tE3X3qGE1VPteOm+jLX0pk2x2b YUPYvgoSNk4mKj+Xwo9l5nOvSie2wNdCGU1skLxTwhMziloJAF scI7hhxTE3b8va0vfXBR9Sm/IzYCd6Aw9SzTTaf6DTTAeyOyRL9VqqcZVOmNpH0L7PnEJ7ms4F Z801aqZZ5P1CD1dpTG3yFeF20KehQuBDIq28k9qnfZT7TSDTgG yox8qAxKccGoUYX8LRk57RFI4XW0dMMZ0qOjqMCLjuVBXmNEiY S7mE8HjYArmq5Gxbe5R6qUrGD/wlmMgf3DjVNXbolJCUB6pDpxRu1JjZUQZsCiDRbiY6RfiT6WIH GQGjReLkozmNEyop1Z7uDix5pwQj6ITpRGCNECsKzgMyOExjWV jHJDy8nDONU0ZEA7GU8ZN7TGuRVZVLeJWzKC0hnZfUS4mEK1tg EpLWGtdOJ2CAB0kbjQ2V1YTZHW0yAo0V5dNOecKstD+RtnRNUs pEcYQDtudOce+oHpAAFg18HOm15JZZ3DMoVSjHSSHAqzSCTlbi gFLWFmf6dEoHvwWm9HKd2Dcn2CmR7tOJZULatMWpgWxSXvck6f 7oXTSj+1XflNLILZyiUHyG01ZMLIMdw7KiCD1VGsRnP+srP8XD qXEnTZvbqursdZ9OknD+HTAdJDPp1EnFW3Qq3cVi61iV3ECpq5 ZE8ZpCmRE5ndJRSj6t6ppKnB1rVG9SKBlZjsX7OreX9U4xjvuc PvK+d9odnSj7/agDZmpfZ2bSqfNQoMg1bT8LuEn9wi69APOpnLa64yUxtIMpPmo KdlxV2mg3RXWNerVQoFeS770EjN9qjF5YKIlXtdB77hQ8T3lF5 FpaiNp77qRYHG8prbC1sNOk07cWOimDjUlbYNJBa62RMqtb9hk z+UM/uS5CHjeaqZY8O3Xj0x8eUxexSFWetSqHbJ0X5a5aiJtF4XLavm 21sGnG9KAx2c0u+eRd3Oyqt6TkE4KHKQMsXUd5favSKbJQ71IF Uz6oVpuJveOPLHtIlBJMf7/DzJR+kFqXDDrtCdEfAvj194r5Un0G+Rcy/qNgT4gu19Pfb3EzhZCUrur/TgadhqxRxn9jDlmjjP8VH7JG+Q3MgK5n');
GetBitmapSize(bmp, w, h);
ResizeBitmapEx(bmp, RM_Bilinear, w * 4, h * 4);
ThresholdAdaptiveBitmap(bmp, 0, 255, false, TM_Mean, 50);
Writeln(Tesseract_GetText(bmp)); // Using different include.. I think it's tesseractGetText(bmp) for you.
debugBitmap(bmp);
freeBitmap(bmp);
end;


01234567 89 abcdefghijketc.

KeepBotting
06-20-2014, 04:00 AM
Wrong image format? Well then, in what format are you attempting to have Simba read the text? For most (if not all) intents and purposes, Simba will only accept files in bitmap (.bmp) format.

Showing us the portion of your code which you think causes the issue is a good thing to do when asking for help!

mastah
06-20-2014, 09:05 AM
Tesseract works perfect for me.. It's all how you process the image.

{$i srl-6/srl.simba}
var
bmp, w, h: integer;
begin
bmp := BitmapFromString(197, 22, 'meJztmq2LlUEUxlX8BFFwi4gYBBWL4A0WURC0GEzCVsFkE7PF YLCIRaxis2gw+mI1mawGu/+EP/ZxD49nPva9e6/CwsDhMu+Zr2fOPHPOmdm9dWOxf9++48cObJw4eGbj0JAhq8jGq ZNwicLFs4eHDFlRcE34JQqXzx25cv7okCGryNHDf1wT5cWFY0O GrCKDTkPWKJE4DToNWV1adHr0+OGn7z+mn7/4pexVDx7eR3/v7jVX8vn28xf0779+iyo6onEpAbx89zbpvT21XvXk6ROhQoCB5 umLZ2kKH+32zUtvPnyUEngJc/Qtq/pSLn++0LFqh7IZltyxZQcJVZubd6otV8HflyqdgMGMkIGCKBHA KGhDHer1q6fRsNcon79+hR1CjwZh6+lFgzQ7mkQAWVu9EPgQVY zMIAxFG34Z3KeQQB5nIDxBQ3tE3X3qGE1VPteOm+jLX0pk2x2b YUPYvgoSNk4mKj+Xwo9l5nOvSie2wNdCGU1skLxTwhMziloJAF scI7hhxTE3b8va0vfXBR9Sm/IzYCd6Aw9SzTTaf6DTTAeyOyRL9VqqcZVOmNpH0L7PnEJ7ms4F Z801aqZZ5P1CD1dpTG3yFeF20KehQuBDIq28k9qnfZT7TSDTgG yox8qAxKccGoUYX8LRk57RFI4XW0dMMZ0qOjqMCLjuVBXmNEiY S7mE8HjYArmq5Gxbe5R6qUrGD/wlmMgf3DjVNXbolJCUB6pDpxRu1JjZUQZsCiDRbiY6RfiT6WIH GQGjReLkozmNEyop1Z7uDix5pwQj6ITpRGCNECsKzgMyOExjWV jHJDy8nDONU0ZEA7GU8ZN7TGuRVZVLeJWzKC0hnZfUS4mEK1tg EpLWGtdOJ2CAB0kbjQ2V1YTZHW0yAo0V5dNOecKstD+RtnRNUs pEcYQDtudOce+oHpAAFg18HOm15JZZ3DMoVSjHSSHAqzSCTlbi gFLWFmf6dEoHvwWm9HKd2Dcn2CmR7tOJZULatMWpgWxSXvck6f 7oXTSj+1XflNLILZyiUHyG01ZMLIMdw7KiCD1VGsRnP+srP8XD qXEnTZvbqursdZ9OknD+HTAdJDPp1EnFW3Qq3cVi61iV3ECpq5 ZE8ZpCmRE5ndJRSj6t6ppKnB1rVG9SKBlZjsX7OreX9U4xjvuc PvK+d9odnSj7/agDZmpfZ2bSqfNQoMg1bT8LuEn9wi69APOpnLa64yUxtIMpPmo KdlxV2mg3RXWNerVQoFeS770EjN9qjF5YKIlXtdB77hQ8T3lF5 FpaiNp77qRYHG8prbC1sNOk07cWOimDjUlbYNJBa62RMqtb9hk z+UM/uS5CHjeaqZY8O3Xj0x8eUxexSFWetSqHbJ0X5a5aiJtF4XLavm 21sGnG9KAx2c0u+eRd3Oyqt6TkE4KHKQMsXUd5favSKbJQ71IF Uz6oVpuJveOPLHtIlBJMf7/DzJR+kFqXDDrtCdEfAvj194r5Un0G+Rcy/qNgT4gu19Pfb3EzhZCUrur/TgadhqxRxn9jDlmjjP8VH7JG+Q3MgK5n');
GetBitmapSize(bmp, w, h);
ResizeBitmapEx(bmp, RM_Bilinear, w * 4, h * 4);
ThresholdAdaptiveBitmap(bmp, 0, 255, false, TM_Mean, 50);
Writeln(Tesseract_GetText(bmp)); // Using different include.. I think it's tesseractGetText(bmp) for you.
debugBitmap(bmp);
freeBitmap(bmp);
end;


01234567 89 abcdefghijketc.

Yes in this case it works but sometimes it doesn't I tried, I want something more secure. You even now see a space between the output.


Wrong image format? Well then, in what format are you attempting to have Simba read the text? For most (if not all) intents and purposes, Simba will only accept files in bitmap (.bmp) format.

Showing us the portion of your code which you think causes the issue is a good thing to do when asking for help!

Great thanks!

I'm saving it as a .bmp I created only the letter '1' and saved is as 1.bmp
Then I tried searching for it.

This is the code:


{$I SRL-6/SRL.simba}
{$I SPS/lib/SPS-RS3.Simba}

var
text: string;

procedure declareVariables();
begin
LoadFont('Chars', false); //->shadow???
end;

begin
clearDebug();
setupSRL();
declarePlayers();
declareVariables();
text:= GetTextAt(300, 316, 0, 0, 0, 3111603, 0, 1, 'Chars');
WriteLn(text);

end.