I see two problems, first:
if (DetectNumbers2(pictureBox6.Image, GetReadColor(int.Parse(label1.Text))) != null) pictureBox11.Image = DetectNumbers2(pictureBox6.Image, GetReadColor(int.Parse(label1.Text)));
OCR is expensive, and what you are doing (using GetPixel) is VERY VERY expensive, even if you are just returning a piece of an image. So why are you doing the exact same thing twice? You can assign Null to an image, just do this:
pictureBox11.Image = DetectNumbers2(pictureBox6.Image, GetReadColor(int.Parse(label1.Text)));
And leave out the If statement. If you need to tell the user, you can check AFTER, like
if (pictureBox11.Image == null)
Next is this line, which may be where your problem is coming from:
var img2 = bimg.Clone(new Rectangle(x, y, bimg.Height-y-1, bimg.Width-x-1), pictureBox3.Image.PixelFormat);
Rectangles are defined as : (x, y, Width, Height). You are trying to define it as (x, y, Height, Width), which is wrong.
If you look at the documentation for
System.Drawing.Bitmap.Clone()[
^] You can see it gives an OutOfMemoryException if the width/height of the rectangle is outside of the bounds of the original bitmap.