Using ResourceFunction["PrintDefinitions"][MoleculeRecognize]
, one can determine that the source implementation is MolVec. The specific source code is:
Chemistry`MolVecLink`Private`molStringFromImageFile[
Pattern[path,
Blank[String]]] := Block[
{cleanup, jFile, molString},
Chemistry`MolVecLink`Private`initialize[];
JLink`JavaBlock[
jFile = JLink`JavaNew["java.io.File", path];
molString =
Quiet[Chemistry`MolVecLink`Private`runMolvec @ jFile,
JLink`Java::excptn];
cleanup[];
molString
]
];
which is pretty clear. You can check out this demo to see an example of MolVec outside of Wolfram Language.
Looking at the MolVec code, it seems like it uses a variety different methods to attempt to extract molecular information, but they all seem to be OCR related (ie Image-analysis-based) rather than a machine-learning-based pipeline.
Information about MolVec accuracy and performance can be found in this presentation, linked from the demo above. There does not seem to be any specific detail about its limitations on the web, and I would posit that after a point, this becomes no longer a Mathematica question :)
MoleculeRecognize[]
just happens to be piggybacking on software like those. $\endgroup$