The optical scanning head for scanning one- and two-dimensional bar codes includes at least one combination of light emitting diodes arranged so the LEDs emit light at different angles to create a fan of light. The combination and arrangement of the LEDs depends on whether one- or two-dimensional bar codes are to be read. A cylindrical lens optimizes the light impinging upon the bar code. An optical module includes a light shield or "dark room" and a lens/filter assembly which focusses reflected light on the detector, made up of a CCD module for detecting the light intensity in the reflected beam over a field of view across a bar code symbol. One or more combinations of linear CCD arrays in the CCD module generate an electrical signal indicative of the detected light intensity. A trigger mechanism allows selection of the number of LEDs or linear CCD arrays to efficiently scan one- or two-dimensional bar codes, where two-dimensional bar codes require more illumination for accurate scanning.