Circuit board analysis and bill of materials generation
A circuit board analysis system receives an image of a circuit implementation such as a printed circuit board (PCB), and renders a list of components, part numbers and vendors, referred to as a Bill of Materials (BOM) cataloging the constituent components and placement on the board. A scanning of the PCB image yields placement and identification of components, and textual recognition of the PCB substrate board identifies designators indicative of the location and connections of the components. Indica or markings on individual components aids component classification and identification, and a BOM listing components and designators included on the PCB is rendered.
1 . A method for analyzing a circuit representation for generating a list of materials thereon, comprising:
receiving an image of a circuit on a circuit board;
scanning the image for identifying objects indicative of circuit components based on an indicia on the respective component;
scanning the image for identifying labels of the circuit components printed on the circuit board;
matching the identified objects with a corresponding label;
generating the list of materials including a set of entries having, for each circuit component of the circuit components, a type of the circuit component and the respective corresponding label; and
rendering the generated list of materials.
2 . The method of claim 1 further comprising:
for each object, identifying a position and an area, the area indicative of a region occupied by the circuit component and the position indicative of a location of the region relative to regions corresponding to other components.
3 . The method of claim 1 further comprising, for each object, comparing the object to images of other components for determining a type of the component represented by the object.
4 . The method of claim 3 further comprising matching a portion of the image defined by the object to a predetermined set of likely circuit components for computing a match based on a correspondence of visual features.
5 . The method of claim 1 further comprising, for each circuit component,
matching the circuit component with a predetermined set of visual images of circuit components, and
determining a type of the circuit component based on a matching of visual features of the circuit component from the image with the predetermined set.
6 . The method of claim 1 further comprising
receiving a photographic representation of a printed circuit board (PCB) as the image, and
identifying the objects from circuit elements attached to a planar surface of the PCB and having a height above the surface of the PCB; and
identifying the labels based on designators rendered on the surface of the PCB.
7 . The method of claim 1 wherein matching further comprises:
combining, for each circuit component and each identifying label, a set of pairs denoting each circuit component with each possible identifying label;
computing, for each pair in the set of pairs, a distance indicative of a likelihood that the respective circuit component corresponds with the identifying label of the pair; and
concluding, for the pair having the lowest distance from the circuit component to the paired identifying label, that the identifying label describes the circuit component.
8 . The method of claim 7 further comprising:
matching each circuit component with an identifying label having the least distance based on a distance function for computing a distance between each available pair of circuit components and identifying labels.
9 . The method of claim 1 further comprising, for each circuit component, determining if any indicia appears on the circuit component, and if so,
determining textual elements in the indicia, and
determining any graphical designations of source; and
comparing the textual elements to part numbers in a manufacturer database; and
comparing the graphical designation to known trademarks indicative of vendors of circuit components.
10 . The method of claim 1 , further comprising:
detecting, for each circuit component, an area on a circuit board occupied by the respective circuit components;
detecting, in the image, textual representations; and
determining whether the textual representations are designators based on whether they appear in the area occupied by a circuit component.
11 . The method of claim 9 , further comprising:
determining, based on at least one of the part number and the graphical designation, a country of manufacture, a vendor, a cost, and a description.
12 . A circuit analysis server device, comprising
an interface to a camera for receiving an image of a circuit on a circuit board;
application logic configured to:
scan the image for identifying objects indicative of circuit components based on an indicia on the respective component;
scan the image for identifying labels of the circuit components printed on the circuit board;
match the identified objects with a corresponding label; and
generate the list of materials including a set of entries having, for each circuit component of the circuit components, a type of the circuit component and the respective corresponding label; and
an interface to a rendering device for rendering the generated list of materials.
13 . The device of claim 12 , wherein the application logic is further configured to,
for each object, identify a position and an area, the area indicative of a region occupied by the circuit component and the position indicative of a location of the region relative to regions corresponding to other components.
14 . The device of claim 12 wherein the application logic is further configured to, for each object, compare the object to images of other components for determining a type of the component represented by the object.
15 . The device of claim 14 further comprising an interface to a component repository, the component repository containing images of circuit components for matching a portion of the image defined by the object to a predetermined ser of likely circuit components for computing a match based on a correspondence of visual features.
16 . The device of claim 12 further comprising:
receiving a photographic representation of a printed circuit board (PCB) as the image, and
identifying the objects from circuit elements attached to a planar surface of the PCB and having a height above the surface of the PCB; and
identifying the labels based on designators rendered on the surface of the PCB.
17 . The device of claim 12 further comprising a matching table,
the matching table configured to store entries for combining, for each circuit component and each identifying label, a set of pairs denoting each circuit component with each possible identifying label, the logic further configured to:
compute, for each pair in the set of pairs, a distance indicative of a likelihood that the respective circuit component corresponds with the identifying label of the pair; and
conclude, for the pair having the lowest distance from the circuit component to the paired identifying label, that the identifying label describes the circuit component.
18 . The device of claim 12 further comprising:
matching each circuit component with an identifying label having the least distance based on a distance function for computing a distance between each available pair of circuit components and identifying labels.
19 . The device of claim 12 further comprising an interface to a manufacturer database, the application logic further configured to, for each circuit component, determine if any indicia appears on the circuit component, and if so,
determine textual elements in the indicia, and
determine any graphical designations of source; and
compare the textual elements to part numbers in a manufacturer database; and
compare the graphical designation to known trademarks indicative of vendors of circuit components.
20 . A computer program embodying program code on a non-transitory medium that, when executed by a processor, performs steps for implementing a method for analyzing a circuit representation for generating a list of materials thereon, the method comprising:
receiving an image of a circuit on a circuit board;
scanning the image for identifying objects indicative of circuit components based on an indicia on the respective component;
scanning the image for identifying labels of the circuit components printed on the circuit board;
matching the identified objects with a corresponding label;
generating the list of materials including a set of entries having, for each circuit component of the circuit components, a type of the circuit component and the respective corresponding label; and
rendering the generated list of materials.