Skip to the content
PCBKitNew board
2 layersElements, the printed circuit board in 3D

Automatic PCB Analysis and Reverse Engineering

Copper layers
2
Thickness
1.6 mm
Parts
20
Nets
11
Pads
40
Tracks, vias
112, 2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
1 Jul 2026
Updated
26 Jul 2026

Overview

Elements is an open-source printed circuit board by KamMalinski, from the KamMalinski/PRISM repository on GitHub, published under the AGPL-3.0 licence. It is a 2-layer board with 20 parts on 11 nets, routed with 112 tracks and 2 vias.

Its parts include 5 capacitors, 5 resistors, 5 diodes and 5 inductors.

README

README.md

PRISM logo

PRISM

PCB Recognition and Intelligent Schematic Mapping

PRISM reconstructs an editable KiCad schematic from aligned images of the top and bottom sides of a PCB. It combines image processing, pad and trace detection, OCR-assisted component recognition, connectivity analysis, manual correction tools, and schematic optimization in one desktop application.

PRISM is currently alpha software. Generated connectivity and component assignments must be reviewed before they are used for manufacturing, servicing, or safety-critical work.

Features

  • guided import of TOP and BOTTOM PCB images;
  • automatic or manually sampled solder-mask and copper colors;
  • board alignment, pad pairing, trace detection, and net reconstruction;
  • OCR-assisted labels and component candidates;
  • interactive correction editor for pads, traces, pairs, OCR, and components;
  • text netlist and KiCad schematic export;
  • optional KiCad CLI validation and schematic optimization;
  • native desktop builds for Windows, macOS, and Linux.

Requirements

  • Python 3.11 or newer when running from source;
  • Tk 8.6 or newer;
  • Tesseract OCR for OCR features;
  • KiCad with kicad-cli for round-trip validation and optimized previews.

PRISM searches PATH first and then conventional installation locations for the current operating system. Tesseract can also be selected manually in the interface.

On Debian or Ubuntu, install the native GUI and OpenCV runtime libraries before running from source or building:

bash
sudo apt-get install python3-venv python3-tk libgl1 libglib2.0-0

Run From Source

Create and activate a virtual environment, then install the project:

bash
python -m venv .venv

Windows PowerShell:

powershell
.\.venv\Scripts\Activate.ps1
python -m pip install -r requirements.txt
prism

macOS and Linux:

bash
source .venv/bin/activate
python -m pip install -r requirements.txt
prism

Windows users can alternatively run .\run.ps1.

Build Native Packages

PyInstaller creates native applications and does not cross-compile. Run the matching script on each target operating system:

powershell
# Windows
.\scripts\build\build_windows.ps1
bash
# macOS
bash scripts/build/build_macos.sh

# Linux
bash scripts/build/build_linux.sh

The scripts create an isolated .venv-build environment and use the shared configuration in scripts/build/package.py.

PlatformOutput
Windowsdist/PRISM/PRISM.exe
macOSdist/PRISM.app
Linuxdist/PRISM/PRISM

Windows and Linux use PyInstaller's onedir layout. Distribute the complete dist/PRISM directory, not only the executable. The macOS application is unsigned; public releases should be code-signed and notarized by the release owner.

Basic Workflow

  1. Select images of the top and bottom PCB sides.
  2. Confirm automatic color detection or collect color samples manually.
  3. Run the analysis.
  4. Review detected geometry and connectivity in the correction editor.
  5. Recalculate after corrections and inspect the generated netlist.
  6. Open the result directory and validate the KiCad schematic.

Generated files are written under ~/PRISM/results by default. Set the PRISM_OUTPUT_DIR environment variable to use a different location. A local results/ directory is also excluded from version control.

Dataset

Dataset/ contains twelve PCB examples with TOP/BOTTOM images and reference KiCad projects. It is intended for repeatable development and evaluation, not as a formal train/test split.

Reproducible Evaluation

evaluation/ contains the versioned reference annotations and English-language tools for synthetic regression tests and ablation studies. A baseline run is started from the repository root with:

bash
python evaluation/run_evaluation.py

The six supported ablation configurations can be executed with:

bash
python evaluation/run_ablations.py

The tools generate machine-readable JSON reports, compact Markdown summaries, and a LaTeX ablation table under evaluation/results/. See the evaluation guide for sample selection, dependency requirements, command-line options, report interpretation, and the exact scope of the synthetic results. These tests exercise controlled KiCad-derived board images; they do not validate PRISM on photographs of physical PCBs.

Project Structure

text
.
|-- Dataset/                         Test images and reference KiCad projects
|-- evaluation/                      Synthetic evaluation, ablations, and reference annotations
|-- scripts/build/                   Native build entry points and shared build logic
|-- src/schematic_generator/
|   |-- assets/                      Application and executable icons
|   |-- correction_editor/           Manual reconstruction editor
|   |-- detection/                   Pad, trace, plane, and pair detection
|   |-- diagnostics/                 Diagnostic reports
|   |-- geometry/                    Alignment and rectification
|   |-- gui/                         Main desktop workflow
|   |-- kicad/                       KiCad serialization and routing
|   |-- netlist/                     Connectivity and component inference
|   |-- schematic/                   Validation and optimization
|   |-- platform_support.py          Operating-system integration
|   `-- __main__.py                  Application entry point
|-- pyproject.toml                  Package metadata and runtime dependencies
|-- requirements-build.txt          Build-only dependencies
`-- requirements.txt                Editable development installation

Automated Builds

The GitHub Actions workflow in .github/workflows/build.yml runs smoke tests and creates Windows, macOS, and Linux artifacts using the same scripts as local builds.

Contributing

Keep platform-independent behavior in the application modules. Operating-system differences belong in platform_support.py, while packaging differences belong in scripts/build/package.py. New detection or reconstruction behavior should be checked against multiple samples from Dataset/.

License

No project license has been selected yet. Add a LICENSE file before presenting PRISM as open-source software or accepting external contributions.

Parts

20
QtyValueFootprintReferences
1100mHInductor_THT:L_Axial_L14.0mm_D4.5mm_P5.08mm_Vertical_Fastron_LACCL5
1100uFCapacitor_THT:C_Radial_D10.0mm_H16.0mm_P5.00mmC2
1100uFCapacitor_THT:CP_Radial_D14.0mm_P7.50mmC5
110KResistor_THT:R_Axial_Power_L20.0mm_W6.4mm_P5.08mm_VerticalR5
110RResistor_THT:R_Axial_DIN0516_L15.5mm_D5.0mm_P20.32mm_HorizontalR1
110mHInductor_THT:L_Axial_L7.0mm_D3.3mm_P12.70mm_Horizontal_Fastron_MICCL2
110uFCapacitor_THT:C_Radial_D4.0mm_H5.0mm_P1.50mmC1
11KResistor_THT:R_Axial_DIN0617_L17.0mm_D6.0mm_P25.40mm_HorizontalR3
11uHInductor_THT:L_Radial_D7.5mm_P5.00mm_Fastron_07PL1
12.2uFCapacitor_THT:CP_Axial_L80.0mm_D35.0mm_P85.00mm_HorizontalC3
1220uFCapacitor_THT:CP_Radial_D7.5mm_P2.50mmC4
122RResistor_THT:R_Axial_DIN0614_L14.3mm_D5.7mm_P15.24mm_HorizontalR2
122mHInductor_THT:L_Axial_L24.0mm_D7.1mm_P5.08mm_Vertical_Vishay_IM-10-28L4
14.7mHInductor_THT:L_Axial_L12.8mm_D5.8mm_P20.32mm_Horizontal_Fastron_HBCCL3
1470RResistor_THT:R_Axial_DIN0918_L18.0mm_D9.0mm_P25.40mm_HorizontalR4
1DDiode_THT:D_DO-201AE_P15.24mm_HorizontalD5
1DDiode_THT:D_DO-35_SOD27_P3.81mm_Vertical_AnodeUpD4
1DDiode_THT:D_DO-15_P10.16mm_HorizontalD3
1DDiode_THT:D_A-405_P10.16mm_HorizontalD2
1DDiode_THT:D_5W_P10.16mm_HorizontalD1

Questions

What parts does the Elements use?

20 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Elements KiCad files?

From the KamMalinski/PRISM repository on GitHub, at the commit this page was made from: the board is Dataset/Elements/Elements/Elements.kicad_pcb and its schematic Dataset/Cascade/Cascade/Cascade.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Elements design in my own project?

Its repository publishes it under the AGPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

More from KamMalinski/PRISM

10
  • 2 layersCascade, the printed circuit board in 3D

    Cascade

    KamMalinski/PRISM

    Automatic PCB Analysis and Reverse Engineering

    19 parts7AGPL-3.0
  • 2 layersFilter, the printed circuit board in 3D

    Filter

    KamMalinski/PRISM

    Automatic PCB Analysis and Reverse Engineering

    7 parts7AGPL-3.0
  • 2 layersConnector, the printed circuit board in 3D

    Connector

    KamMalinski/PRISM

    Automatic PCB Analysis and Reverse Engineering

    6 parts7AGPL-3.0
  • 2 layersCrossover, the printed circuit board in 3D

    Crossover

    KamMalinski/PRISM

    Automatic PCB Analysis and Reverse Engineering

    6 parts7AGPL-3.0
  • 2 layersTransistors, the printed circuit board in 3D

    Transistors

    KamMalinski/PRISM

    Automatic PCB Analysis and Reverse Engineering

    5 parts7AGPL-3.0
  • 2 layersDivider, the printed circuit board in 3D

    Divider

    KamMalinski/PRISM

    Automatic PCB Analysis and Reverse Engineering

    4 parts7AGPL-3.0
  • 2 layersFloating, the printed circuit board in 3D

    Floating

    KamMalinski/PRISM

    Automatic PCB Analysis and Reverse Engineering

    4 parts7AGPL-3.0
  • 2 layersGroundplane, the printed circuit board in 3D

    Groundplane

    KamMalinski/PRISM

    Automatic PCB Analysis and Reverse Engineering

    4 parts7AGPL-3.0
  • 2 layersRound, the printed circuit board in 3D

    Round

    KamMalinski/PRISM

    Automatic PCB Analysis and Reverse Engineering

    4 parts7AGPL-3.0
  • 2 layersMeander, the printed circuit board in 3D

    Meander

    KamMalinski/PRISM

    Automatic PCB Analysis and Reverse Engineering

    3 parts7AGPL-3.0

Similar boards

  • 2 layers66.9 × 74.5 mmDeskHop Rev1, the printed circuit board in 3D

    DeskHop Rev1

    hrvach/deskhop

    Fast Desktop Switching Device

    20 parts7.9kGPL-3.0
  • 2 layers86.4 × 64.8 mmSlot machine, the printed circuit board in 3D

    Slot machine

    google/google-ctf

    Google CTF

    20 parts5.1kApache-2.0
  • 2 layers36.2 × 26.8 mmEsp32 minimal, the printed circuit board in 3D

    Esp32 minimal

    atopile/atopile

    Design circuit boards with code! ✨ Get software-like design reuse 🚀, validation, version control and collaboration in hardware; starting with electronics ⚡️

    20 parts4kMIT
  • 2 layers108.1 × 393.8 mmSweep compact ble, the printed circuit board in 3D

    Sweep compact ble

    davidphilipbarr/Sweep

    Sweep - a small promicro based keyboard inspired by the Ferris.

    20 parts2.1k
  • 2 layers26 × 15.9 mmTPS54340 Buck Regulator, the printed circuit board in 3D

    TPS54340 Buck Regulator

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    20 parts1.2k
  • 2 layers67.6 × 30.5 mmRgb to hdmi, the printed circuit board in 3D

    Rgb to hdmi

    hoglet67/RGBtoHDMI

    Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI

    20 parts1kGPL-3.0
  • 2 layers44.3 × 28.7 mmLin bus adapter esp32, the printed circuit board in 3D

    Lin bus adapter esp32

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    20 parts915
  • 2 layers89.5 × 61.6 mmFreeDeck TH 2020-02, the printed circuit board in 3D

    FreeDeck TH 2020-02

    FreeYourStream/freedeck-hardware

    all the stuff you need to build your own FreeDeck

    20 parts772