I have a few ideas and I may develop some of them further, or may not!
1. Use Colour
The diagram looks like you have generated it from some package, including Ghostscript, rather than scanning it from paper, so I presume you can control its generation. If so, the very simplest and cleanest option is probably to insert a command into the Postscript to change the colour of all text, or alternatively of all lines and circles, then you can just use colour to extract the text.
2. Use a filter
You could use a long horizontal probing element and a median to determine horizontal lines and a long vertical probing element to remove vertical lines. Obviously, you can fiddle with the lengths etc, but that would look like this:
convert drawing.png \
\( -clone 0 -threshold 50% -negate -statistic median 200x1 \) \
-compose lighten -composite \
\( -clone 0 -threshold 50% -negate -statistic median 1x200 \) \
-composite result.png
I tried with 200 as the length:

and with 500 as the length:

3. Use Connected Components Analysis or Blob Analysis
The idea would be to find all the blobs in the image, and then remove those blobs larger than the size of the letters you wish to retain. I extracted a portion of your image to play with this approach:

convert extract.png -colorspace gray -negate -threshold 50% \
-define connected-components:verbose=true \
-connected-components 8 -auto-level output.png
Output
Objects (id: bounding-box centroid area mean-color):
2: 943x660+77+0 553.0,296.5 536272 srgb(0,0,0)
0: 73x660+0+0 36.0,329.3 48150 srgb(0,0,0)
10: 279x176+376+484 507.5,582.9 42374 srgb(0,0,0)
8: 167x99+488+413 574.9,458.8 8939 srgb(0,0,0)
5: 291x253+370+407 517.6,486.0 8121 srgb(255,255,255)
7: 166x83+397+413 477.3,450.4 7479 srgb(0,0,0)
9: 77x90+578+436 628.7,491.1 3511 srgb(0,0,0)
6: 81x67+376+413 403.5,438.0 3197 srgb(0,0,0)
1: 4x660+73+0 74.5,329.5 2640 srgb(255,255,255)
3: 221x154+124+328 213.8,440.1 2225 srgb(255,255,255)
4: 198x154+686+378 798.3,488.4 2133 srgb(255,255,255)
11: 38x59+136+559 154.5,588.1 1094 srgb(255,255,255)
12: 37x59+790+559 808.0,588.0 955 srgb(255,255,255)
13: 37x59+837+559 855.0,588.0 955 srgb(255,255,255)
15: 37x58+230+560 248.6,588.2 888 srgb(255,255,255)
16: 37x58+742+560 760.6,588.2 888 srgb(255,255,255)
14: 39x58+180+560 201.5,587.8 862 srgb(255,255,255) <--- Let's look at this one
19: 23x45+844+566 855.0,588.0 848 srgb(0,0,0)
18: 23x45+797+566 808.0,588.0 848 srgb(0,0,0)
20: 24x22+143+589 154.5,599.5 420 srgb(0,0,0)
17: 18x16+146+566 154.5,573.6 227 srgb(0,0,0)
21: 8x11+114+606 117.5,611.0 72 srgb(255,255,255)
22: 8x11+720+606 723.5,611.0 72 srgb(255,255,255)
23: 2x20+0+628 0.3,637.5 30 srgb(255,255,255)
The fields are titled at the start of the output, but basically looking at blob 14:
14: 39x58+180+560 201.5,587.8 862 srgb(255,255,255)
It is 39 pixels wide and 58 pixels tall and located at offset 180,560 from the top-left corner and it is white (255,255,255) which, since I negated the image, means it is black in the original image so it corresponds to the size of a letter of your text (50x70 or so).
Just by way of explanation (not necessary for actual processing), let's draw that as a rectangle onto the extract:
convert extract.png -fill red -draw "rectangle 180,560 219,617" aBlob.png

Note that we had image offset plus width and height, whereas the following -draw rectangle
command takes top-left and bottom-right corner so we need to add the width and height to the offset to get the bottom-right corner.
Good, so we can now make a mask of all the letters!
convert extract.png -colorspace gray -negate -threshold 50% -define connected-components:verbose=true -connected-components 8 -auto-level output.png | awk -F"[ x+]" '/255,255,255/ && $4<=50 && $5<=80{printf "fill white rectangle %d,%d %d,%d\n",$6,$7,$6+$4,$7+$5}' > draw.txt
Output (in file draw.txt
)
fill white rectangle 136,559 174,618
fill white rectangle 790,559 827,618
fill white rectangle 837,559 874,618
fill white rectangle 230,560 267,618
fill white rectangle 742,560 779,618
fill white rectangle 180,560 219,618
fill white rectangle 114,606 122,617
fill white rectangle 720,606 728,617
fill white rectangle 0,628 2,648
Here is how to put all those protected blobs into a mask:
convert -size 1020x660 xc:black -draw @draw.txt mask.png
That results in this mask:

Then we can apply the mask to the image:
convert extract.png mask.png -compose copyopacity -composite result.png
