Sea-Watch 3, a vessel run by German NGO Sea Watch, and Ocean Viking, run by European charity SOS Mediterranee, rescued the migrants in international waters off Tunisia 68 km (40 miles) from the North African coast, near oil facilities and other ships.
Sea-Watch 3, which assumed command of the operation, took 141 of the survivors while Ocean Viking took the rest. The yacht Nadir, from the German NGO ResQ Ship, later gave support.
It was not clear if there were any deaths or injuries among the migrants who were in the wooden boat, which was crammed with migrants on deck and inside the hull.
The craft was taking in water and its engine was not working, the Reuters witness said.
Migrant boat departures from Libya and Tunisia to Italy and other parts of Europe have increased in recent months as weather conditions have improved.
According to the UN-affiliated International Organization for Migration, more than 1,100 people fleeing conflict and poverty in Africa and the Middle East have perished this year in the Mediterranean.
Many of the migrants in this latest rescue were seen jumping off the boat and trying to swim to Sea-Watch 3, the Reuters witness said.
The migrants were mainly men from Morocco, Bangladesh, Egypt and Syria.