title: Extract people names from unstructured yearbooks text
body: <p>I have many scanned pages of USA school yearbooks with people portraits and names. All texts from the pages are OCR'ed and collected in several versions per each page: </p>
  
  <ol>
  <li>Unstructured text file. <a href="http://textuploader.com/d4ov1" rel="nofollow noreferrer">Example</a></li>
  <li>Xml with coordinates of every sentence. <a href="http://textuploader.com/d4ov4" rel="nofollow noreferrer">Example</a></li>
  <li>Xml with coordinates of every single letter. <a href="https://file.io/DKgMlq" rel="nofollow noreferrer">Example</a></li>
  </ol>
  
  <p><a href="https://i.stack.imgur.com/NdQUk.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/NdQUk.jpg" alt="Sample yearbooks page"></a></p>
  
  <p>The goal is to determine which text strings represents person name and correlate it with portraits. The problem is that every single yearbook is unique and every single page is also could be unique, so no common pattern could be applied (but probably some number of common patterns). Another problem is that the pages contains many other texts besides names and collection is huge.</p>
  
  <p>Example above has names written in capital letters, so they can be easily identified, but it's not the common case. </p>
  
  <p>Another example:</p>
  
  <p><a href="https://i.stack.imgur.com/ojsnA.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/ojsnA.jpg" alt="Sample yearbooks page"></a>
  <a href="http://textuploader.com/d4on5" rel="nofollow noreferrer">Text</a> / <a href="http://textuploader.com/d4on1" rel="nofollow noreferrer">XML1</a> / <a href="https://file.io/1fkzmR" rel="nofollow noreferrer">XML2</a></p>
  
  <p>Here is <a href="https://file.io/UN0g6B" rel="nofollow noreferrer">few more examples</a></p>
  
  <p>I'm thinking on few directions:</p>
  
  <ol>
  <li>Use dictionary of US names to build an index and search every
  single word from the page within this index to find possible names.</li>
  <li>Use Name-Entiry Recognition. I tried <code>opennlp</code> Java library, but
  it was working only for names that started with capital letter.
  Maybe other libraries will work.</li>
  <li>Train some neural network. Can results of this be better than
  first two options?</li>
  </ol>
  
  <p>Could you suggest which algorithms could help to solve this problem?</p>