Scherzer, who compiled a 16-7 record last season and played a key role in the Tigers' run to the World Series, has avoided arbitration with the contract.
The signing is worth $6.7 million, CBS Sports reported.
The five-year veteran was second in the major leagues last year with 231 strikeouts -- second only to teammate Justin Verlander -- and recorded a 3.74 earned run average.
Over 142 career games, Scherzer has amassed a 52-42 mark with a 3.88 ERA and 829 strikeouts.
Putin thinks Obama would save him if he were drowning
Chipotle plans first price increase in 3 years