OCR low-res image from specified set of characters
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Amit
el 8 de Feb. de 2016
Respondida: Amit
el 21 de Feb. de 2016
Hello all:
Is there a way in which I provide the super set of characters (no characters to be expected outside the set) to the OCR. I mean to say for example if I know that my images has only [U, T, C, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, :, space] as the only characters, can I feed it to matlab OCR and thus expect better predictions.
Can this help somehow on low res image to increase the accuracy?
Kindly see the attached image I am struggling to get good results with.
Thanks much for your attention. Any thoughts will be immensely helpful.
Regards,
Amit
0 comentarios
Respuesta aceptada
Image Analyst
el 8 de Feb. de 2016
For something like that you can probably just crop out each character and find the area. Then, assuming each character has a unique area, have a look up table where a certain area means the character must be a certain character.
2 comentarios
Image Analyst
el 10 de Feb. de 2016
Right. Something like
measurements = regionprops(labeledImage, 'Area');
allAreas = [measurements.Area];
% Define character areas
characterAreas = [300,410,130,500,........] % Whatever they are.
for k = 1 : length(allAreas)
differences = abs(measurements(k).Area - characterAreas);
[~, closestCharacterIndex] = min(differences);
% Now you know what character it is....
end
Más respuestas (2)
Anand
el 8 de Feb. de 2016
Editada: Anand
el 8 de Feb. de 2016
This exact functionality is available in the ocr function. Use the 'CharacterSet' Name-Value pair to achieve this. Something like this:
ocrResults = ocr(yourImage,'CharacterSet','UTC1234567890')
In your case, you may have even more information that you can supply to the ocr function. If it's a valid assumption that the left half of the image only contains characters, you could have two calls to ocr with different ROI's.
For example (this is pseudo-code),
leftROI = [1 1 floor(size(im,2)/2) size(im,1)-1];
ocrLeftResults = ocr(im, leftROI, 'CharacterSet','UTC');
rightROI = [floor(size(im,2)/2)+1 1 floor(size(im,2)/2) size(im,1)-1];
ocrRightResults = ocr(im, rightROI, 'CharacterSet', '0123456789');
5 comentarios
Ver también
Categorías
Más información sobre Language Support en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!