I have points representing a bridge like in this picture:

My goal is to get all the points that are in the red box. These points all share a common surface that is not necessarily planar.
The problem is there is a little bit of noise and I can't rely on the triangles' normals since some of the small triangles have very different normals.
How can I extract all the points inside the red box without getting any other points?
So far I'm investigating:
Getting 10-30 points (P) in a small area and find best fitting plane of all P and remove all the points that have their distance to the plane over a certain constant. Iterate until all the points have a distance to the plane under that constant.
Get a triangle (T) in the red box and include the adjacent triangles if all their points have their distance form the plane T less than a constant.
You need to de-noise the surface in some way.
One technique is to use Chambolle's algorithm, which is a computer vision technique based on total variation regularization. It is very fast, and it preserves planar dimensionality. It is fairly easy to implement, but your data do not appear to be in a grid, so it will be annoying to implement.
Another method is to treat your box as a convex volumetric element, and identify all points that satisfy the convexity criterion.
Another method might be to find the points that are below some residual value for a least-squares fit of that planar region.
Ultimately, the best method depends on your data, your implementation, and other factors. Actually, Signal Processing.SE might be better for this question.