BOM from high resolution photo of PCB
There is no right answer to this question in the way that it is phrased, other than 'Maybe'.

It all depends on the construction of the PCB assembly (PCA).

Many modern components, especially the very small ones, don't have proper markings or sometimes any markings at all.

Instead of marking their identity, they have a manufacturer code.
E.g. (And this is not a true example) instead of SN74AVC1G14, it might have just 'Y14' printed on it as there is not room to print more.

Also crafty manufacturers either use devices that they have been sourced with markings removed, or remove them themselves, e.g. by scratching them out.

Or, in the case of many passive components, they normally have no markings. In this case it is often possible (depending on their circuit connections) to measure the component in circuit using a multimeter, though often this is not accurate enough and you need to remove it and make a measurement out of circuit, perhaps using an LCR bridge.

Some PCBs have passive components, (inductors, capacitors and resistors) embedded inside.  Although these would not appear on a BOM (bill of materials), they are still part of the circuit. This make reverse engineering the circuit (and not the BOM which is what you want) very difficult.

Lastly, some components are programmable, so even if you know what they are, you can't easily read their contents, once programmed they become a different part.  Sometime these can be read using specialist kit, sometimes reading them is impossible.

So it is possible to reverse engineer a BOM from a PCA image if:


The PCA has no components with their markings removed, and
No components without markings which no person has separately measured, and
No programmable parts which you can't read their contents.