Yes.
There are not many ways to do this, but one way might be to disassemble the mesh, remove the excess edges, and reconstruct the missing parts.
It might look something like this:
Here I first split the mesh at those edges where the edge angles are not equal to $0$. This way I get planar surfaces as single elements.
Afterwards I remove the inner edges in these elements, so that I only get the "frame". I transform this into curves, so that it is possible for me to remove also the points lying on a straight line.
Then I simply instantiate along a mesh line a few curve circles with the same number as curves. This allows me to resample them further, with exactly the same number as the number of vertices in the original faces.
By then applying the node Fill Curve
, these are converted to faces for me, whose points I move back to the original positions.
Finally, I only have to transfer the original normals back.
Of course, you can also add additional custom vertex groups at the beginning when splitting the mesh so that no decimation occurs at certain edges.
(Blender 3.6+)
This answer is basically based on an answer given earlier, however the solution shown here can be applied to any mesh even if it has tris or n-gons:
How can I delete edges/edge loops that are on a mostly flat surface using geometry nodes?