How to use spell checker with matlab?
    6 views (last 30 days)
  
       Show older comments
    
I have written few words in text file result.txt using matlab....but there are some spelling mistakes on it... i am doing character recognition...How should i correct the spelling and show the result in the next line in the same file result.txt....can anyone help
0 Comments
Accepted Answer
  Cedric
      
      
 on 26 Jul 2015
        
      Edited: Cedric
      
      
 on 26 Jul 2015
  
      You could try this:
UPDATE : here is a slightly modified version (also attached)
 function wordsChecked = checkWordsSpelling( words )
    %
    %   Based on Mathworks thread:
    %   http://www.mathworks.com/matlabcentral/answers/91885-is-there-any-way-to-check-spelling-from-within-matlab
    %
    % - Split space-separated words into cell array of words, or wrap
    %  single word into cell array.
    if ischar( words )
        if any( words == ' ' )
            words = strsplit( words, ' ' ) ;
        else
            words = {words} ;
        end
    end
    % - Launch MS Word and create document.
    h = actxserver( 'word.application' ) ;
    h.Document.Add ;
    % - Build cell array of originals and suggestions.
    words  = words(:) ;      % -> columns cell array.
    nWords = numel( words ) ;
    for wId = 1 : nWords
        % - Check if spelling correct. Loop back if so.
        isCorrect    = h.CheckSpelling( words{wId,1} ) ;
        words{wId,2} = isCorrect ;
        if isCorrect
            words{wId,3} = false ;
            continue ;
        end
        % - Build cell array of suggestions.
        nSug = h.GetSpellingSuggestions( words{wId,1} ).count;
        words{wId,3} = nSug > 0 ;
        if nSug > 0
            for sId = 1 : nSug
                words{wId,4}{sId} = ...
                    h.GetSpellingSuggestions( words{wId,1} ).Item(sId).get( 'name' ) ;
            end
        end
    end
    % - Quit MS Word.
    h.Quit
    % - Build table (or struct array if you prefer).
    %wordsChecked = cell2struct( words, {'original', 'isCorrect', 'hasSuggestion', 'suggestion'}, 2 ) ;
    wordsChecked = cell2table( words, 'VariableNames', {'original', 'isCorrect', 'hasSuggestion', 'suggestion'} ) ;        
 end
With that, you can do the following:
 >> checked = checkWordsSpelling( 'Helloo' )
 checked = 
    original    isCorrect    hasSuggestion              suggestion           
    ________    _________    _____________    _______________________________
    'Helloo'    false        true             'Hello'    'Halloo'    'Hellos'
 >> checked = checkWordsSpelling( 'Helloo Wolrd Hello' )
 checked = 
    original    isCorrect    hasSuggestion    suggestion
    ________    _________    _____________    __________
    'Helloo'    false        true             {1x3 cell}
    'Wolrd'     false        true             {1x2 cell}
    'Hello'     true         false            []        
 >> checked.suggestion{2}
 ans = 
    'World'    'Word'
 >> checked = checkWordsSpelling( {'Helloo', 'Wolrd'} )
 checked = 
    original    isCorrect    hasSuggestion    suggestion
    ________    _________    _____________    __________
    'Helloo'    false        true             {1x3 cell}
    'Wolrd'     false        true             {1x2 cell}
Hope it helps!
4 Comments
  Isabelle Goy
 on 12 May 2023
				Hi, 
thanks for the code provided. I'm using a similar spell-check on my side but I need that the spell-check done through Word uses french as a refernce language. I have tried to set it this way:
h = actxserver( 'word.application' ) ;
h.Document.Add ;
selection = h.Selection;
selection.LanguageID = 1036; % which is the code for french language
but also the code is running, this line is not taken into consideration when the spell checking is happening, or at the leat the spell checking is still happening on an english base ? 
Any suggestion/help aprreciated.
  Daniel
 on 23 Jul 2023
				
      Moved: DGM
      
      
 on 23 Jul 2023
  
			Some words produce an error 
checked = checkWordsSpelling( 'Procuremend' )
Error using cell2table (line 77)
The VariableNames property must contain one name for each variable in the table.
Error in checkWordsSpelling (line 52)
    wordsChecked = cell2table( words, 'VariableNames', {'original', 'isCorrect', ...
More Answers (0)
See Also
Categories
				Find more on Workspace Variables and MAT Files in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!