I had toyed with that idea. This was before ML visualizers had become decent. I was going to use the set numbers to help me figure out what I could or could not do. Think there are a couple of online resources that do that. There are a lot of sets so currently a "i have a pile of xyz pieces" and then just exhaustively going through them maybe with a % complete would be simple enough if you had a complete library of what pieces were in each set. You could get a bit clever with 'i have x piece which set is that in' and filter it down. Not sure if you could get away without it being basically O(m^n) though. But given how small the existing number of sets is compared to the compute power most computers have these days that may not be that bad to just brute force it? It really becomes a combinatoric problem and there are a lot of algs to choose (hehe) from. I personally was noodling with 3 or 4 SQL queries that did it.
With ML detection you can get a good ways decently the hard part is 'hidden' feature. Depending on orientation with some pieces they will hide features. For example a 2x4 flat looks the same as a 2x2 flat on many orientations (extreme example but shows off the effect nicely). I have seen some people use tumbling the piece or a few cameras to mitigate the issue.
My proj was more along the lines of how do you represent a single piece in memory without using a planar point system such as what ldraw did. I had toyed with the idea of converting between the two systems for memory reasons. But it became compute/IO expensive very quickly on collision detection with other pieces.