Metal component surfaces are random textured and non-smooth. There are many stains on the surface of metal component that are similar to the gray scale of the scratches. The scratches have non-uniform gray distribution, various shapes, and low contrast in their background, posing challenges in accurate scratch detection. This paper presents a method for detecting weak scratches on metal component surfaces based on deep convolutional neural networks (DCNNs). First, a DCNN is trained using labeled scratch images. Then, the scratches and some faults are detected by the trained DCNN, and most of the faults can be removed through properly thresholding based on the size of connected regions. Finally, the scratch length united in the number of pixels is obtained by the skeleton extraction. The experimental results show that the proposed method can effectively deal with background noise, thereby achieving accurate scratch detection.