1. A method for detecting surface defects on a Printed Circuit Board (PCB) having at least one layer including components, said method comprising: providing a digital image of the PCB; identifying edges on said PCB image; providing a corresponding computer model for each component on said at least one layer of the PCB; detecting anomalies on the PCB image by comparing said identified edges to said computer model; and for each of said detected anomalies, determining if said detected anomaly corresponds to a surface defect.