ticks = Join[Thread[{Range[π/2, 2 π, π/2], Reverse@Range[3, 12, 3],
{0, .05}}, List, 2],
Thread[{Complement[Range[π/6, 2 π- π/6, π/6], Range[π/2, 2 π, π/2]], "",
{0, .02}}, List, 1]];
pc2 = First @ PieChart[{1, 1}, SectorOrigin -> {{0, 1}, 2},
ChartStyle -> Directive[EdgeForm[], FaceForm[None]],
SectorSpacing -> {0, 0}, PerformanceGoal -> "Speed",
PolarAxes -> True, PolarTicks -> {ticks, None},
PolarAxesOrigin -> {0, 1/10000}];
axis = pc2 /. t_Text :> (t /. Scaled[{0., 0.}, a_] :> Scaled[-.05 a, a]);
opts = Sequence[SectorOrigin -> {Automatic, 2}, PlotRangePadding -> -10,
ImagePadding -> -20, Frame -> False, ImageMargins -> -10,
BaseStyle -> {FontSize -> Scaled[.04]}];
PieChart[{3, 4, 2, 3, 2}, opts,
ChartLabels -> Placed[{"1", "2", "3", "4", "5"}, "RadialCallout"],
Epilog -> axis]

A more convenient approach is to use ClockGauge
to create an angular axis:
ClearAll[angularAxis]
angularAxis[o:OptionsPattern[]][so_, t_: Range[3, 12, 3], tl_: {20, 12}, sd_: {12, 5}] :=
{First[ClockGauge[{}, ScaleOrigin -> so, ScaleDivisions -> sd, o, "TickLengths" -> tl,
GaugeMarkers -> None, GaugeFrameStyle -> Directive[EdgeForm[], White],
TicksStyle -> {Thick, Thin}, LabelStyle -> FontSize -> Scaled[.03]] /.
Text[a_, b___] :> Text[a /. Except[Alternatives @@ t] :> "", b]],
Circle[{0, 0}, so]};
PieChart[{3, 4, 2, 3, 2}, opts,
ChartLabels -> Placed[{"1", "2", "3", "4", "5"}, "RadialCallout"],
ImageSize -> Large, Epilog -> angularAxis[][2]]

Use
angularAxis["LabelSide"->Right, "TickSide"->Left, TicksStyle->Directive[Thin, Black]][2]
to get

and
Epilog -> angularAxis["LabelSide" -> Right, "TickSide" -> Left][1.5]
to get
