Algorithmix.Forensics.OCR.ParallelRecognize C# (CSharp) Method

ParallelRecognize() public static method

Parallelized Recognize Function takes in a list or array of images, A specified length and for each image returns an OCRData object
public static ParallelRecognize ( IEnumerable images, int length, Accuracy mode = Accuracy.High, string lang = "eng", bool enableTimer = false ) : OcrData[]
images IEnumerable Array or List of Bitmaps
length int Number of items to be Recognized from the array
mode Accuracy Accuracy Mode
lang string Desired OCR Language
enableTimer bool Enables OCR Scan Timer if true
return OcrData[]
        public static OcrData[] ParallelRecognize(IEnumerable<Bitmap> images,
            int length,
            Accuracy mode = Accuracy.High,
            string lang = "eng",
            bool enableTimer = false)
        {
            Tuple<int, Bitmap>[] indexedImages = new Tuple<int, Bitmap>[length];
            int index = 0;
            foreach (Bitmap image in images)
            {
                if (index >= length)
                {
                    break;
                }
                indexedImages[index] = new Tuple<int, Bitmap>(index, image);

                index += 1;
            }

            ConcurrentDictionary<int, OcrData> safeMap = new ConcurrentDictionary<int, OcrData>();

            Parallel.ForEach(indexedImages, pair =>
                {
                    int position = pair.Item1;
                    Bitmap image = pair.Item2;
                    safeMap[position] = Recognize(image, mode, lang, enableTimer);
                });

            OcrData[] data = new OcrData[length];
            foreach (KeyValuePair<int, OcrData> kvpair in safeMap)
            {
                data[kvpair.Key] = kvpair.Value;
            }

            return data;
        }