using System.Threading.Tasks;
static async Task Main(string[] args)
HttpClient client = new HttpClient();
byte[] buffer = await client.GetByteArrayAsync("https://upload.wikimedia.org/wikipedia/commons/2/23/US_one_dollar_bill%2C_obverse%2C_series_2009.jpg");
using (var engine = new TesseractEngine(@"path/to/tessdata", "eng", EngineMode.Default))
using (var img = Pix.LoadFromMemory(buffer))
using (var page = engine.Process(img))
string text = page.GetText();
string serialNumber = ExtractSerialNumber(text);
Console.WriteLine("Serial Number: " + serialNumber);
static string ExtractSerialNumber(string text)
string[] words = text.Split(new[] { ' ', '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);
foreach (string word in words)
if (word.Length >= 6 && word.Length <= 12 && word.ToUpper() == word && !word.Contains("$"))